1

Rails アプリで次のような行を見ました。

Order::PAYMENT_TYPES.map {|p| [t('.payment_type.'+p), p]}

PAYMENT_TYPEは文字列配列で、この文字tは Rails の i18n に使用されます。

ここで角括弧がどのように使用されているかわかりません。どうやらそれらは配列やメソッド用ではありません。そして、これを単に に書き換え{|p| t('.payment_type.'+p) }ます。

では、この例の Ruby の文法は何でしょうか?

4

3 に答える 3

2

Ruby は、メソッドまたはブロックから最後のステートメントを返します。この場合、角かっこを使用すると、ブロックは 2 つの項目の配列を返すため、 3 つの項目がmapある場合に でそのブロックを呼び出すとPAYMENT_TYPES、次のような結果になり[ [a1, b1], [a2, b2], [a3, b3] ]ます。

于 2013-01-25T07:12:51.390 に答える
2

どうやらそれらは配列やメソッド用ではありません

まあ、配列リテラルです

[t('.payment_type.'+p), p]
# ^ first element       ^ second

これを次のように書き直します...

これでうまくいく場合は、先に進んでください。アプリの詳細がわかりません。

于 2013-01-25T07:11:37.173 に答える
0

角括弧は配列に使用されるだけでなく、Procs を呼び出すこともできます。

proc = lambda { |name| "Hello, #{name}" }
proc.call('Bob')
=> "Hello, Bob"

proc = lambda { |name| "Hello, #{name}" }
proc['Bob']
=> "Hello, Bob"

しかし、この場合、他の人が示したように、新しい配列が返され、配列のネストされた配列になります。

于 2013-01-25T07:23:09.370 に答える