9

我想将一个数组分成三个变量;第一个值放入一个变量中,第二个值放入另一个变量中,其余的都放入一个字符串中,例如:

arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr[0] # var1 => "a1"
var2 = arr[1] # var2 => "b2"
var3 = ? # var3 should be => "c3d4e5f6"

需要什么代码来实现每个变量的列出值?

4

3 回答 3

18

这似乎和任何事情一样好:

arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr[0]            # => "a1"
var2 = arr[1]            # => "b2"
var3 = arr[2..-1].join   # => "c3d4e5f6"

如果你不需要保留arr,你可以这样做:

arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr.shift   # => "a1"
var2 = arr.shift   # => "b2"
var3 = arr.join    # => "c3d4e5f6"

其他人则指出 splat 运算符,这是可以理解的,但我认为这比上面的更糟糕:

arr = ["a1","b2","c3","d4","e5","f6"]
var1, var2, *tmp = arr
var3 = tmp.join

就像这样:

arr = ["a1","b2","c3","d4","e5","f6"]
var1, var2, *var3 = arr
var3 = var3.join

不过,这是一个需要注意的选项。

于 2013-06-05T00:54:13.643 回答
6

这是使用splat 分配(又名数组解构)的另一种形式:

arr = ["a1","b2","c3","d4","e5","f6"]
# "splat assignment"
var1, var2, *var3 = arr
# note that var3 is an Array:
#  var1 -> "a1"
#  var2 -> "b2"
#  var3 -> ["c3","d4","e5","f6"]

也可以看看:

于 2013-06-05T00:58:25.827 回答
4

使用 splat 运算符:

arr = ["a1","b2","c3","d4","e5","f6"]
var1, var2, *var3 = arr

# var1 => "a1"
# var2 => "a2"
# var3 => ["c3", "d4", "e5", "f6"]
于 2013-06-05T00:59:14.087 回答