プログラミングの勉強日記
2020年7月9日 Progate Lv.162
RubyⅠ RubyⅡ
今日からRubyの勉強を始める。1ヶ月後にでRuby on Railsを用いてアプリを作れるように勉強していく。
#Rubyとは
Qiitaでは初めてRubyについて触れるので、最初に簡単にRubyの説明と簡単な使い方について説明する。
RubyはWebアプリケーションのシステムを作るためのプログラミング言語で、似たような言語ではPHPやPythonなどがある。
本題のハッシュに入る前に簡単にRubyの使い方について説明する。
##変数の定義
変数名=値
で変数の定義を行うことができる。基本的な使い方は他のプログラミング言語と同じ。変素名は何の値が代入されているかわかりやすい名前にする。2語以上の組み合わせる変数名にはアンダーバー_
を用いる。
##変数展開
文字列の中で#{変数名}
とすることで変数を代入している値に置き換えて文字列を含めることを変数展開という。変数展開を行う場合は必ずダブルクオーテーション"
で囲む。シングルクォーテーションの場合、変数展開が行われず、そのまま文字列として扱われてしまう。また、数字と文字列は+
で文字連結できないので、そうゆう場合でも変数展開を用いる。
name="田中"
puts "名前は#{name}です"
puts '名前は#{name}です'
名前は田中です
名前は#{name}です
##if文の書き方
処理はif
とend
で囲む。C言語ではelse if
が使われるがRubyではelsif
を用いる。
##繰り返しの処理
each文を使う。配列.each do |変数名|
と書き、end
までの間に実行したい処理を書く。
names=["田中","山本","山田"]
names.each do |name|
puts name
end
田中
山本
山田
each文内の変数名(name)は好きな名前でいいが、配列の変数名(names)の単数形にすることが多い。
|変数|
はeach文のdoからendまでしか使えない。each文の外で定義した変数はeach文の中でも使うことができる。それぞれの変数の使用できる範囲をスコープという。
#ハッシュとは
複数の値を管理する方法の1つ。配列は複数の値を並べて管理するのに対して、ハッシュはそれぞれの値にキープという名前をつけて管理する。
user={"name"=>"田中", "age"=>16}
puts user
user={"name"=>"田中", "age"=>16}
(↑定義したハッシュがそのまま出力される)
#ハッシュの要素を用いる
ハッシュの各要素の値は対応するキーを使ってハッシュ[キー]
とすることで用いられる。また、ハッシュ[キー]=値
で更新できる。ハッシュ[新しいキー]=値
で追加することもできる。
user={"name"=>"田中", "age"=>16}
puts user["name"]
#キー"age"に対する値を更新
user["age"]=17
puts user
#キー"gender"に対する値を追加
user["gender"]=male
puts user
田中
user={"name"=>"田中", "age"=>17}
user={"name"=>"田中", "age"=>17, "gender"="male"}
#シンボル
ハッシュのキーの部分を文字列ではなく先頭にコロン:
を付けた書き方。つまり、クォーテーションで囲む代わりに先頭にコロンをつける。クォーテーションで囲む場合と先頭にコロンをつける場合で出力結果は同じになる。文字列とシンボルは厳密には違うけど、基本的には同じように使える。
ハッシュのキー部分でシンボルを用いたらその値を用いるときはシンボルで指定しなければいけない。
user={"name"=>"田中", "age"=>17}
puts user["name"]
user={:name=>"田中", :age=>17}
puts user[:name]
【一般的】ハッシュのキーにシンボルを用いるときは省略して書くことができる。この書き方が一般的である。省略した場合でも、シンボルを用いて要素を取得する。
user={name:"田中", age:17}
puts user[:name]
#nilの扱い
ハッシュから存在しないキーの値を取り出したときの「何もない」という値のこと。読み方は「ニル」。putsしても何も表示されない。
user={name:"田中", age:17}
puts user[:height]
#要素がハッシュである配列
配列の要素にはハッシュを使うことができる。
配列[インデックス番号]
でハッシュを用いることができるので、そのハッシュを代入した変数を使って変数[キー]
でハッシュの要素の値を用いられる。
users=[
{name:"田中", age:17}
{name:"山本", age:20}
]
puts users[0]
user=users[0]
puts user[:name]
{:name=>"田中", :age=>17}
田中
上のを省略して書くことができる。配列[インデックス番号][キー]
で特定のハッシュの値を用いることができる。
users=[
{name:"田中", age:17}
{name:"山本", age:20}
]
puts users[1][:name]
山本
each文を使って書くこともできる。
users=[
{name:"田中", age:17}
{name:"山本", age:20}
]
users.each do |user|
puts user
end
users.each do |user|
puts user[:name]
end
{:name=>"田中", :age=>17}
{:name=>"山本", :age=>20}
田中
山本