あと4つは募集中です
他の言語というかJavaしか知らなかった昔の自分がつまづいたような気がする点を4つ
メソッド名がJavaと違いすぎる
慣れるしかない…
"hoge ".trim();
"hoge ".strip
ダメなうらわざ、やったら負け
class String alias :trim :strip end " hoge ".trim
null/nilに対するメソッド呼び出し
JavaならNullPointerExceptionとなりますが、RubyではNoMethodError。Rubyはnilもオブジェクトなのでヌルポは無いのです。
エラーメッセージにfor nil:NilClassとあれば、メソッド未定義ではなく、変数の未初期化かもしれないのでそっちも調べよう。
NoMethodError: undefined method `hoge' for nil:NilClass
forループ?
無いです。timesを使いましょ
5.times { |e| puts e }
for in構文はあるけど
for i in (0..4) puts i end
Rubyならeachですよね。
(0..4).each { |e| puts e }
eachやmapのようなEnumerableのブロック付きメソッドを使わないなら、Rubyを使う意味があまり無いと思う。
{}とdo endってどっちを使うのがいいの?何が違うの?
好きな方を使えばいいと思うよ
ただし、優先度が違うので以下のようにすると解釈が変わる
def hoge a puts a if block_given? yield else 3 end end hoge hoge(1) { 2 } puts "--" hoge hoge(1) do 2 end
結果
1 2 -- 1 3
以下のように解釈されるようだ。
hoge(hoge(1) { 2 }) hoge(hoge(1)) do 2 end