Webエンジニア目指して#29

どうもスプラマンです。
未だにこのゲームやり続けてるのやばいですね レーティング制で終わりがない、なおかつこれだけやってても楽しいと思える瞬間があるのがゲームとしてすごいなあと思います。環境はひどいけど・・・

さて本日もやってまいりましょうProgateのRuby IIです。ゼノブレ終わったので駆け抜けたい

配列
ingredients=["miso","soy sauce","kinako"]
puts "味の決め手は#{ingredients[1]}です"

------出力結果
味の決め手はsoy sauceです
each文
ingredients=["miso","soy sauce","kinako"]

ingredients.each do |ingredient|
  puts "#{ingredient}を持っています"
end

*each文の中にはスコープが作られるため注意

ハッシュ
foods = {
  "name"=>"apple",
  "number"=>5
}
puts foods
foods["number"]-=1 #キーの更新
puts "個数が#{foods["number"]}に変更されました"
foods["price"]=300 #キーの追加
puts foods

-----出力結果
{"name"=>"apple", "number"=>5}
個数が4に変更されました
{"name"=>"apple", "number"=>4, "price"=>300}

多分jsでオブジェクトにプロパティを指定するのと同じ役割
rubyではハッシュキーを指定する
*配列の[ ]と違い{ }なところに注意
[ ]でやっても動作したけど...

シンボル
 foods ={
  :name=>"apple"
  :number=>9
}

文字列とは違い、内部では数値として扱っているため処理が早いらしい

シンボルを使ったハッシュの省略
foods ={
  name: "apple"
  number: 9
}

:name=>の代わりにname:のような書き換えが可能 呼び出しの際は変わらずfoods[:name]で扱う

nil

nullRubyではnilとして扱う

ハッシュin配列
foods=[
  {name: "apple", number: 9},
  {name: "orange", number: 5}
]

puts foods[1][:name]配列内のハッシュ値を出力
実行結果=>apple

each+ハッシュ
foods=[
  {name: "apple", number: 9},
  {name: "orange", number: 5}
]

foods.each do |food|
  puts "#{food[:name]}#{food[:number]}個あります"
end

実行結果--------  
appleは9個あります  
orangeは5個あります  
 ----------------  

こんなもんですね、ではでは。