定食屋おろポン

おろしポン酢と青ネギはかけ放題です

基礎から真面目にRuby-配列とハッシュ編-

「教科書的に言語仕様をしっかり勉強してから書く」ではなく、「とりあえず書いてみて、分からなくなったらドキュメントでも読みながらまた書く」ってアプローチのほうが言語学習には良いよ!とよく聞くけど、やっぱり細かいことが気になってしまう性格なので最低限の基礎は固めてから次に進もうと思う次第です。
当座の目標はrailsソースコードを読むことにしようかな。
とりあえずamazon:初めてのRubyの2章を読みます。

シンタックスシュガー

とりあえず添字参照演算子[]と添え字代入式[]=が面白いよね。こんなことになっているのか、という驚き。演算子も何でもかんでもだいたいメソッド!って感じらしいね。

c = [1,2,3,4,5]
c.length.times do |i|
  puts c.[](i)
  # puts c[i]
end

# 出力
1
2
3
4
5
array1 = [0,1,2,3,4,5,6,7,8,9,10]
array2 = [0,1,2,3,4,5,6,7,8,9,10]
array3 = [0,1,2,3,4,5,6,7,8,9,10]

array1.[]=(2, 5)
# array1[2] = 5
array2.[]=(2..3, 5)
# array2[2..3] = 5
array3.[]=(2, 3, 5)
# array3[2, 3] = 5

p array1
p array2
p array3

# 出力
[0, 1, 5, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 5, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 5, 5, 6, 7, 8, 9, 10]

代入式のほうは上から
Array#=(nth, val)
Array#
=(range, val)
Array#[]=(start, length, val)
ですね。
ハッシュも一緒みたい。

hash = {"a"=>1, "b"=>2}
hash.[]=("c", 3)
hash.each_key do |key|
  puts "#{key}: #{hash.[](key)}"
end

# 出力
a: 1
b: 2
c: 3

配列・ハッシュで強力かつRubyらしいのはイテレータなんだろうけど、イテレータの詳細は後の章で触れられているのでまたその時に見返すことにします。