ruby数组将第一个,第二个放入变量,其余放入另一个变量

Ben*_*ebe 9 ruby arrays variables

我想将一个数组拆分为三个变量; 将第一个值转换为一个变量,将第二个值转换为另一个变量,将所有其余值转换为一个字符串,例如:

arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr[0] # var1 => "a1"
var2 = arr[1] # var2 => "b2"
var3 = ? # var3 should be => "c3d4e5f6"
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*tle 16

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

arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr[0]            # => "a1"
var2 = arr[1]            # => "b2"
var3 = arr[2..-1].join   # => "c3d4e5f6"
Run Code Online (Sandbox Code Playgroud)

如果您不需要保留arr,您可以:

arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr.shift   # => "a1"
var2 = arr.shift   # => "b2"
var3 = arr.join    # => "c3d4e5f6"
Run Code Online (Sandbox Code Playgroud)

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

arr = ["a1","b2","c3","d4","e5","f6"]
var1, var2, *tmp = arr
var3 = tmp.join
Run Code Online (Sandbox Code Playgroud)

就是这样:

arr = ["a1","b2","c3","d4","e5","f6"]
var1, var2, *var3 = arr
var3 = var3.join
Run Code Online (Sandbox Code Playgroud)

不过,这是一个值得注意的选择.


use*_*674 5

这是一个使用splat赋值(aka数组解构)的替代形式:

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"]
Run Code Online (Sandbox Code Playgroud)

也可以看看: