Rubyists:这叫什么?

时间:2010-06-18 00:50:23

标签: ruby

假设我有一个可以按属性分组的枚举池:

cars = Car.all.group_by(&:color)

然后我想迭代那些cars,如此:

cars.inject([]) do |stack, (color, cars)|
  stack << cars.each do |car|
   ...
  end
end

块变量扩展名的术语是什么(括号之间)?

2 个答案:

答案 0 :(得分:3)

我称之为解构绑定解构赋值,这就是它在其他编程语言中通常所称的内容。在Ruby中,它通常被称为多重赋值并行赋值。如果你想知道它被“正式”调用的是什么,你可以在Draft ISO Specification中查找。

答案 1 :(得分:1)

这是模式匹配的弱形式,是某些函数语言(ML,Haskell及其同类)的定义特征之一。在Python中,它通常称为解包。我不知道Ruby是否有特定的术语。