9

配列を 3 つの変数に分割したいと考えています。最初の値を 1 つの変数に、2 番目の値を別の変数に、残りのすべてを 1 つの文字列にします。たとえば、次のようになります。

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 に答える