第34回 気になるRubyの文法規則

Perlは弱い型付けだけどRubyは強い型付け

1 + "1"

は文法エラー。

1 + "1".to_i

で明示的に型変換しないといけない。


暗黙的に型変換されるのは、 puts のときに to_s が裏で呼ばれていたり、
整数と小数点の足し算のときなどがあるみたい。
だから全部が全部 強い型付けになっていて、型変換絶対してやんないからってことにはなってないみたい。

配列を引数にするとき

Perlだと、リファレンスで渡してやらないと、配列が展開されてしまう。
Rubyだと配列はそもそも参照で扱ってるので、ちゃんと渡せる。
ん〜でもPerlみたいに展開してほしいときってない? (個人的には、そんなときはないけど....)

そういうときは配列の前に * を付ければいいみたい。

hoge *a

みたいに。

文字列の繰り返し

Perl だと

'a' x 3

と x を使うけど、 Ruby だと * みたい。 これは数値演算の乗算と同じ記号。

'a' * 3

クラスの作りかた

class end の中にはけっこうなんでも書けるみたい。普通に処理とか書けちゃう。
けど、他の言語みたいにメソッドを定義していくのが一般的。

暗黙的にselfってのがある。

class Foo
 p self

 def hoge; p self end
end


puts '----------------'

Foo.new.hoge


結果:

Foo
----------------
#<Foo:0x291bc>


ちなみに、インスタンス変数は @ を変数名の前に付けるけど、
initializeとかメソッドの中に書かないとインスタンス変数と見なしてくれない。
メソッドの外に書かれたやつとは別物。