0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rubyのハッシュとシンボルについて

Posted at

プログラミングの勉強日記

2020年7月9日 Progate Lv.162
RubyⅠ RubyⅡ
今日からRubyの勉強を始める。1ヶ月後にでRuby on Railsを用いてアプリを作れるように勉強していく。

#Rubyとは
 Qiitaでは初めてRubyについて触れるので、最初に簡単にRubyの説明と簡単な使い方について説明する。
 RubyはWebアプリケーションのシステムを作るためのプログラミング言語で、似たような言語ではPHPやPythonなどがある。
 本題のハッシュに入る前に簡単にRubyの使い方について説明する。

##変数の定義
 変数名=値で変数の定義を行うことができる。基本的な使い方は他のプログラミング言語と同じ。変素名は何の値が代入されているかわかりやすい名前にする。2語以上の組み合わせる変数名にはアンダーバー_を用いる。

##変数展開
 文字列の中で#{変数名}とすることで変数を代入している値に置き換えて文字列を含めることを変数展開という。変数展開を行う場合は必ずダブルクオーテーション"で囲む。シングルクォーテーションの場合、変数展開が行われず、そのまま文字列として扱われてしまう。また、数字と文字列は+で文字連結できないので、そうゆう場合でも変数展開を用いる。

index.rb
name="田中"
puts "名前は#{name}です"
puts '名前は#{name}です'
コンソール
名前は田中です
名前は#{name}です

 
##if文の書き方
 処理はifendで囲む。C言語ではelse ifが使われるがRubyではelsifを用いる。

##繰り返しの処理
 each文を使う。配列.each do |変数名|と書き、endまでの間に実行したい処理を書く。

index.rb
names=["田中","山本","山田"]
names.each do |name|
  puts name
end
コンソール
田中
山本
山田

 each文内の変数名(name)は好きな名前でいいが、配列の変数名(names)の単数形にすることが多い。
 |変数|はeach文のdoからendまでしか使えない。each文の外で定義した変数はeach文の中でも使うことができる。それぞれの変数の使用できる範囲をスコープという。

#ハッシュとは
 複数の値を管理する方法の1つ。配列は複数の値を並べて管理するのに対して、ハッシュはそれぞれの値にキープという名前をつけて管理する。
0709.png

index.rb
user={"name"=>"田中", "age"=>16}
puts user
user={"name"=>"田中", "age"=>16}
(↑定義したハッシュがそのまま出力される)

#ハッシュの要素を用いる
 ハッシュの各要素の値は対応するキーを使ってハッシュ[キー]とすることで用いられる。また、ハッシュ[キー]=値で更新できる。ハッシュ[新しいキー]=値で追加することもできる。

index.rb
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"}

#シンボル
 ハッシュのキーの部分を文字列ではなく先頭にコロン:を付けた書き方。つまり、クォーテーションで囲む代わりに先頭にコロンをつける。クォーテーションで囲む場合と先頭にコロンをつける場合で出力結果は同じになる。文字列とシンボルは厳密には違うけど、基本的には同じように使える。
 ハッシュのキー部分でシンボルを用いたらその値を用いるときはシンボルで指定しなければいけない。

index.rb
user={"name"=>"田中", "age"=>17}
puts user["name"]

user={:name=>"田中", :age=>17}
puts user[:name]

 【一般的】ハッシュのキーにシンボルを用いるときは省略して書くことができる。この書き方が一般的である。省略した場合でも、シンボルを用いて要素を取得する。

index.rb
user={name:"田中", age:17}
puts user[:name]

#nilの扱い
 ハッシュから存在しないキーの値を取り出したときの「何もない」という値のこと。読み方は「ニル」。putsしても何も表示されない。

index.rb
user={name:"田中", age:17}
puts user[:height]

#要素がハッシュである配列
 配列の要素にはハッシュを使うことができる。
 配列[インデックス番号]でハッシュを用いることができるので、そのハッシュを代入した変数を使って変数[キー]でハッシュの要素の値を用いられる。

index.rb
users=[
  {name:"田中", age:17}
  {name:"山本", age:20}
]
puts users[0]

user=users[0]
puts user[:name]
コンソール
{:name=>"田中", :age=>17}
田中

 上のを省略して書くことができる。配列[インデックス番号][キー]で特定のハッシュの値を用いることができる。

index.rb
users=[
  {name:"田中", age:17}
  {name:"山本", age:20}
]

puts users[1][:name]
コンソール
山本

 each文を使って書くこともできる。

index.rb
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}
田中
山本
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?