在一个语句中为一个多个对象分配一个值

Bru*_*Lin 6 ruby

如果我要声明三个新阵列(a1,a2,a3),我可以这样做:

a1=[]
a2=[]
a3=[]
Run Code Online (Sandbox Code Playgroud)

但现在我想在一条线上完成这一切,比如

a1, a2, a3 = []
Run Code Online (Sandbox Code Playgroud)

但这失败了.如何将它们全部分配到一行上的空数组?

小智 18

要做与第二个示例类似的操作,您仍然需要创建三个数组:

a1, a2, a3 = [], [], []
Run Code Online (Sandbox Code Playgroud)

  • 如果被分配的对象恰好是不可变的(比如说,'42`),那么这可以"简化"为"a1,a2,a3 = [42]*3`. (5认同)
  • 在我看来,这将更简单:`a1 = a2 = a3 = 42` (5认同)

saw*_*awa 5

如果你坚持不重复[]文字,那么一种方法是:

a1, a2, a3 = Array.new(3){[]}
Run Code Online (Sandbox Code Playgroud)

另一种方式是:

a1 = (a2 = (a3 = []).dup).dup
Run Code Online (Sandbox Code Playgroud)