我在 Rails 应用程序中看到这样一行:
Order::PAYMENT_TYPES.map {|p| [t('.payment_type.'+p), p]}
PAYMENT_TYPE
是一个字符串数组,字母t
在 Rails 中用于 i18n。
我不确定这里如何使用方括号。显然它们不适用于数组或方法。我会将其重写为{|p| t('.payment_type.'+p) }
.
那么这个例子中的 Ruby 语法是什么?
我在 Rails 应用程序中看到这样一行:
Order::PAYMENT_TYPES.map {|p| [t('.payment_type.'+p), p]}
PAYMENT_TYPE
是一个字符串数组,字母t
在 Rails 中用于 i18n。
我不确定这里如何使用方括号。显然它们不适用于数组或方法。我会将其重写为{|p| t('.payment_type.'+p) }
.
那么这个例子中的 Ruby 语法是什么?
显然它们不适用于数组或方法
嗯,它是一个数组字面量
[t('.payment_type.'+p), p]
# ^ first element ^ second
我会将其重写为...
如果这对您有用,请继续。我们不知道您的应用程序的细节。
Ruby 从方法或块返回最后一条语句。在这种情况下,使用方括号,该块返回一个包含两个项目的数组,因此在 中调用该块map
,如果PAYMENT_TYPES
有三个项目,将导致类似[ [a1, b1], [a2, b2], [a3, b3] ]
.
您是正确的,方括号不仅用于数组,还可以调用 Procs。
proc = lambda { |name| "Hello, #{name}" }
proc.call('Bob')
=> "Hello, Bob"
proc = lambda { |name| "Hello, #{name}" }
proc['Bob']
=> "Hello, Bob"
但是在这种情况下,正如其他人所指出的那样,正在返回一个新数组,从而导致嵌套的数组数组。