ProgateでRubyを学んでみた【コース2】

ProgateのRubyコース2

Progate Rubyコース2

ProgateのRubyコース2を学びたいと思います。Progateはプログラミングを学べる学習サービスになります。Rubyのコース1はRubyの条件分岐までだったけどこっから繰り返しとかハッシュとかがでてきます。筆者は有料会員になっているのでわかりませんが、おそらくコース2あたりで途中から有料会員にならないと学習できなくなってしまいますね。

本でやる人はこちらがおおすめです↓

ぶっちゃけ本よりもProgateのほうが980円で学べるわけですからどっちがお金がかからないかといえばProgateですね。あとは動画で学べるドットインストールとかもありますが、そこは自由に選択すればいいかと思います。

それでは備忘録的に書いていきます。

Rubyの配列

Rubyの配列は配列を宣言するためのややこしい構文がなくてらくです。言語によっては配列に()かっこをつかったり{}かっこをつかったりする言語もあるのですが、セミコロンすらいらないという。

Rubyの場合は[]中かっこですね。

languages = ["日本語", "英語", "スペイン語"]
puts languages

配列へのアクセス

配列にはインデックスという番号があって一番最初は 0 からはじます

languages = ["日本語", "英語", "スペイン語"]
puts languages[1]
puts "#{languages[0]}を話せます"

Rubyの繰り返し

Rubyの繰り返しは他のプログラミング言語とちょっと書き方が違うけど、考え方はたぶん同じなのでとくに問題ないと思う。左から右へ流すイメージ

each

namesという配列があった場合 names.each do |name| とかく |name|には配列の要素がひとつひとつとりだされる。最後はendキーワードで終わる。ブロックを省略する書き方もあったとおもうがここではふれない。スコープはやってりゃわかると思うのでとくにふれない

names = ["suzuki", "tanaka", "fkoji"]
names.each do |name|
  puts name
end

ハッシュ

ハッシュはkeyと値がセットになっているやつで {“key” => 値} のように波かっこを使ってかく。PHPとかでは連想配列と言ったりしたきがする。複数宣言したいときは、カンマ区切りで各 {“key” => 値, “key” => 値}

exam = {"subject" => "Math", "score" => 80}
puts exam

ハッシュへのアクセス

ハッシュへのアクセスはkeyを指定して行う。書き方は hoge = {“name” => “tanaka”}というハッシュがあった場合は
hash[“name”]というようにkeyを指定するとnameに対応した値にアクセスできる。またhash[“name”] = “suzuki”のようにするとkeyの値を更新できる

また宣言したhashに存在しないキーを指定してハッシュに追加することも可能 hoge[“age”] = 20

#ハッシュの宣言
hoge = {"name" => "tanaka"}
#ハッシュへのアクセス
puts hoge["name"]
#値の更新
hoge["name"] = "fkoji"
#keyと値のペアの追加
hoge["age"] = 30

シンボル

ハッシュのキーは “”ダブルクオーテーションじゃなくて :key のようにコロンを使って シンボル というものに置き換えることができる。ハッシュの値へアクセスするときもkeyにシンボルを使って書くことができる。

また矢印を省略して書く場合は
hoge = {name: “tanaka”}のように書く。どっちも覚えてもしょうがないのでシンボルといったらこの省略した書き方を覚えたほうが楽かもしれない

#シンボルを使ったハッシュの宣言
hoge = {:name => "tanaka"}
puts hoge[:name]
#矢印を省略したシンボルの書き方
hogew = {name: "tanaka"}
puts hoge[:name]#アクセスするときはコロンが左側なのでややこしさがある

存在しないキーの指定

ハッシュに存在しないキーを出力しようとするとnilが返ってくる

hoge {name: "tanaka", age: 30}
puts hoge[:gender] # nil

nilはfalseとして扱われる

nilそのものを条件式に使うことが可能 nil は falseとして扱われる。たとえば存在しないハッシュのキーを指定した例↓

exam = {subject: "Math"}
if exam[:score]
puts "#{exam[:subject]}の結果は#{exam[:score]}点です"
else
puts "#{exam[:subject]}の結果はわかりません"
end

配列の中にハッシュを書く

配列の要素としてハッシュを書くことができる

exams = [
  {subject: "Math", score: 80},
  {subject: "Science", score: 55}
  ]
puts exams[1]

配列の中のハッシュへアクセスするには、配列のインデックス番号とハッシュのkey名を指定したり結構ややこしい

配列[index][:subject]のように書く

exams = [
  {subject: "Math", score: 80},
  {subject: "Science", score: 55}
  ]
puts exams[1][:score] # 55

eachを使って配列からハッシュを取り出す

examsはハッシュが格納された配列になっているのでハッシュをひとつずつとりだして、個々のkeyと値にアクセスしている

exams = [
  {subject: "Math", score: 80},
  {subject: "Science", score: 55}
]
exams.each do |exam|
  puts "#{exam[:subject]}の結果は#{exam[:score]}点です"
end

総集編

Rubyだけではないかもいれないけど、rubyは値がそのまま条件式に使えて値が存在する場合はtrueになるのでそれのやりかた。↓
ifの条件式にそのまま値が使用できる

exams = [
  {subject: "Math", score: 80},
  {subject: "Science", score: 55, pr: "頑張ります"}
]
exams.each do |exam|
  puts "#{exam[:subject]}の結果は#{exam[:score]}点です"
  if exams[:pr]
    puts "#{exams[:subject]}さんは#{exams[:pr]}"
  end
end

ProgateのRubyコース2まとめ

ProgateのRubyのコース2は繰り返しやハッシュを中心に学んでいきます。この時点ではまだクラスとかメソッドとかがでてきてないので、基本的な内容になるかと思います。ハッシュの書き方はいろいろあるので復習にはなるかと思います。

次の記事はProgateでRubyを学んでみた【コース3】 | 初心者のプログラミング