にブロック対括弧を使用する際に、 RubyはJavaの、PHP、Cなどのような他のオブジェクトorieintedの言語に非常に似ているように見えるは混乱表面でのRuby
しかし、物事は我々がバンプを開始したときに少し奇妙な取得ブロックに変換する。
例えば、これは
(0...8).max()
=> 7
に動作しますが、これは
(0...8).map(puts "hello world")
hello world
ArgumentError: wrong number of arguments(1 for 0)
Apprantly、マップ・メソッドは、引数を取るが、ブロックを取るしませんしませんので、{}
で()
を交換し、エラーを修正渡します。
(0...8).map{puts "hello world"}
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
=> [nil, nil, nil, nil, nil, nil, nil, nil]
そして、いくつかの方法は、両方を取るべきである - ブロックを&引数
8.downto(1){puts "hello world"}
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
=> 8
は私が持っている問題は、私が示された手法に()
、{}
またはその両方を使用してする必要がある場合に混乱です。どのような基準で決定されるのですか?
- それは方法ごと&に固定されている私は持っている方法は、(ブロックまたはのparams)を取るもの覚えていますか?
- またはメソッドがブロック
{}
かのparams()
をとる場合には、決めますそれに基づいて他の論理的な推論はありますか?
私はそれは方法のAPIで文書化されなければならない