tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

「初めての Ruby」 一人勉強会1日目(2限目)

なんとなく Ruby を勉強しています。

教材はコレ↓
初めてのRuby

第2章に突入です。配列とハッシュについて学びます。

以下、つぶやきメモ。

※1 今のところ、正直あまり Ruby は好きではありません。
※2 オイラがまともにそこそこ書ける言語は C#, Java(5.0より前), Perl です。言語の機能を語っているときはその辺との比較になっているはず
※3 Ruby はまだまったく理解していないので、的外れでトンチンカンな批判してるかも

irb での日本語の取扱い (p.30 例2-1)
irb(main):008:0> c=[a, b, 3, "文字列"]
=> [1, "str", 3, "\312\270\273\372\316\363"]

ぬぉ!?文字化けした。ちなみに文字コードEUC-JP。

print するときは大丈夫みたい。

print c
1str3文字列=> nil

当面は「こういうもの」として受け入れた方がよさそう。
つーか最初見たときはびっくりしたけど、ただ単にコードが入っているだけなのね。

やっぱり配列リファレンス (p30 例2-1)
d = [a, c, [1, 2, 3]]

やっぱり Ruby の配列って、「配列リファレンス」なのね。

負の添字(p31 例 2-4)
c[-2] 

後ろから 2 番目の要素が返る。「Perl でできたっけ?」と思って試したら、Perl でもできた。知らなかった。

c[-5]

みたいに、最初の要素よりも外を指定すると nil が返るらしい。ちなみに Perl では undef が返るみたい。

長さ付き添字と Perl の配列スライス (p31 例2-5)
c[1, 3]

1 が開始インデックスで、3 が長さ。

c[1..3]

も書けて、Perl と同じ意味らしい。Perl 屋さん上がりはこっちを使った方が良さそうだなぁ。

うっかり

c[1, 3, 5]

とか書いてしまいそうだよなぁと思い、やってみたら、

 wrong number of arguments (3 for 2) (ArgumentError)

とか怒られた。エラーになるのならまあいいか。(引数 2個の場合は死亡だけど...)

それにしても、「passwd ファイルから特定のフィールドだけぶっこ抜く」とか、Ruby の配列だとやりにくそうだけど、なんか良い方法あるのだろうか?

配列に対する演算(p.34 例2-10)
irb(main):001:0> array = ["a", "b", "c"]
=> ["a", "b", "c"]
irb(main):004:0> array *= 2
=> ["a", "b", "c", "a", "b", "c"]

...使い道があまり思い付かないけど、凄い。


と、いうことで第2章終了。びっくりや「えー」と思うような仕様は減ってきた。慣れて来たのかなぁ。

第3章に続く。(多分)