0
controller_name, action = "page", "action"
在右侧的每个对象分配给左边的变量。
在此代码:
controller_name, action = "page/action".split("/")
结果是相同的。可能这是一个愚蠢的问题,但我想知道Ruby是如何做到的?
controller_name, action = "page", "action"
在右侧的每个对象分配给左边的变量。
在此代码:
controller_name, action = "page/action".split("/")
结果是相同的。可能这是一个愚蠢的问题,但我想知道Ruby是如何做到的?
"page/action".split("/")
在Ruby中创建数组。
然后controller_name, action = "page/action".split("/")
它导致并行分配,由splatting数组,由String#split
方法创建。
下面是所有处理的中间步骤/对你采取红宝石本身:
controller_name, action = "page/action".split("/")
↓
controller_name, action = ['page','action'] # <- intermediate
↓
controller_name, action = *['page','action'] # <- intermediate
↓
controller_name, action = 'page','action' # final assignment happened now.
可以崩溃和使用Ruby的平行分配扩大阵列运营商。如果最后一个左值前面有一个星号,则所有剩余的右值将被收集并作为数组分配给该左值。类似的,如果最后一个右值是一个数组,你可以在它前加一个星号,它可以有效地将它扩展为它的组成值。 (如果右值只有右值---数组将自动扩展,这不是必需的。)
了解,谢谢你的解释。 –