「初めての Ruby」 一人勉強会 1日目
なんとなく、「Ruby を勉強しようかな」と思いました。
教材はコレ↓
初めてのRuby
ざっと読んでる限り、かなりいい本です。
これを読みつつ、つぶやいてみます。
以下、つぶやきメモ。
※1 今のところ、正直あまり Ruby は好きではありません。
※2 オイラがまともにそこそこ書ける言語は C#, Java(5.0より前), Perl です。言語の機能を語っているときはその辺との比較になっているはず
※3 Ruby はまだまったく理解していないので、的外れでトンチンカンな批判してるかも
文字列の比較について(p3. 例1-1)
% irb irb(main):001:0> str1="string" => "string" irb(main):002:0> str2="string" => "string" irb(main):005:0> str1==str2 => true irb(main):006:0> str1.equal?(str2) => false
敢えて Java と逆かよorz。
変数はリファレンスだから、ポインタ値を比較するのが '==' で、「オーバーロード可能なメソッド」である 'Equals()' で中身を比較する、というのが Java の仕様。
こっちのほうが妥当だと思うんだけどなぁ...
文字列の連結について(p3. 例1-1)
irb(main):011:0> str="lilliput" => "lilliput" irb(main):012:0> str.length => 8 irb(main):013:0> str << "ian" => "lilliputian" irb(main):014:0> str.length => 11
Perl や Java と演算子を変えて、しかも C++ プログラマをびっくりさせるような演算子を使うことないと思うんだけどなぁ...
配列/ハッシュ変数について(p.23 例1-18)
array = ["Bear", "Benford", "Egan"] hash = { "Baxter" => "Stephen", "Stross" => "Charles", "Reynolds" => "Alastaier" }
Perl の「配列リファレンス」を「配列」の構文に当ててるのかよorz
Perl の「ハッシュリファレンスの構文」を「ハッシュの構文」に当てるのかよ orz
あれ?でも Ruby の変数って基本的にリファレンスなんだっけ?だったらこれでいいのか。
Ruby/Tk(p24-25 例1-20)
Ruby/Tk のサンプルだけど、FreeBSD だと Ruby/Tk が入ってなかった。(Ruby は portupgrade とかを入れるときに勝手に入る)
Ruby/Tk を使うには
x11-toolkits/ruby-tk
を入れる。つーか分かりにくい...(これは ports に対する愚痴)
変数の多重代入(p25 例1-21)
irb(main):005:0> a, b="str", "str" => ["str", "str"]
こんな多重代入できるのか...。自重しないとお行儀の悪いコードが簡単に書けそうだなぁ。Perl みたいに括弧を強制すればもうちょいマシなのだけど。
特異メソッド(p.27 例1-23)
特異メソッド面白い。
特定のインスタンスだけに紐付くようなメソッドをつくれるらしい。
irb(main):001:0> a, b="str", "str" => ["str", "str"] irb(main):002:0> def a.greet irb(main):003:1> puts "I am the object #{self.object_id}" irb(main):004:1> end => nil irb(main):005:0> a.greet I am the object 337810090 => nil irb(main):006:0> b.greet NoMethodError: undefined method `greet' for "str":String from (irb):6 from :0
...面白いけど、オイラの実力では真っ当な使い道が思い付かないよ...
(これは自分に対する愚痴)