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は繰り返しやハッシュを中心に学んでいきます。この時点ではまだクラスとかメソッドとかがでてきてないので、基本的な内容になるかと思います。ハッシュの書き方はいろいろあるので復習にはなるかと思います。
コメント