方括号在这里意味着什么?

时间:2013-01-25 07:10:02

标签: ruby

我在Rails应用程序中看到了这样一行:

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

PAYMENT_TYPE是一个字符串数组,字母t用于Rails中的i18n。

我不确定方括号在这里是如何使用的。显然它们不适用于数组或方法。我会将此重写为{|p| t('.payment_type.'+p) }

那么这个例子中的Ruby语法是什么?

3 个答案:

答案 0 :(得分:2)

  

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

嗯,数组文字

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

我会把它重写为......

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

你是正确的,方括号不仅用于数组,你也可以调用Procs。

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

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

但在这种情况下,正如其他人所指出的那样,正在返回一个新数组,从而产生一个嵌套的数组数组。