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

显然它们不适用于数组或方法

嗯,它一个数组字面量

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

我会将其重写为...

如果这对您有用,请继续。我们不知道您的应用程序的细节。

于 2013-01-25T07:11:37.173 回答
2

Ruby 从方法或块返回最后一条语句。在这种情况下,使用方括号,该块返回一个包含两个项目的数组,因此在 中调用该块map,如果PAYMENT_TYPES有三个项目,将导致类似[ [a1, b1], [a2, b2], [a3, b3] ].

于 2013-01-25T07:12:51.390 回答
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 回答