Ruby中等号跟随等号的含义是什么意思?

时间:2014-11-21 09:26:55

标签: ruby

在一些Ruby代码中看到类似的内容:

def getis;gets.split.map(&:to_i);end

k,=getis # What is this line doing?
di=Array::new(k){Array::new(k)}

2 个答案:

答案 0 :(得分:14)

它使用Ruby的multiple assignment

分配数组的第一个元素
a, = [1, 2, 3]
a #=> 1

或者:

a, b = [1, 2, 3]
a #=> 1
b #=> 2

您可以使用*来获取剩余的元素:

a, *b = [1, 2, 3]
a #=> 1
b #=> [2, 3]

或者:

*a, b = [1, 2, 3]
a #=> [1, 2]
b #=> 3

答案 1 :(得分:6)

它的工作原理如下。如果lhs包含单个元素且rhs具有多个值,则会为lhs分配一个值数组,如下所示。

a = 1,2,3  #=> a = [1,2,3]

如果lhs的元素多于rhs,则lhs中的多余元素将被丢弃

a,b,c = 1,2 #=> a = 1, b = 2, c = nil

因此

a, = 1,2,3 #=> a = 1。其余的[2,3]被丢弃