我看到这个 *MyModel::MY_CONSTANT
并在MyModel中引用了它:
MY_CONSTANT = [
:a_field,
:another_field,
[
当称为
permit(:name, *MyModel::MY_CONSTANT)
它扩展到
permit(:name, :a_field, :b_field)
但是刚才发生了什么?
我希望它实际上可以扩展为permit(:name, :a_field, :another_field)
:)但是,是的,基本上,这就是在数组上使用时所做的事情,它获取数组的值并将其扩展为好像它们是作为单个参数提供的一样。因此,您可以采用这些数组元素并将其发送到需要各个参数的方法中。
您也可以反过来使用它,可以定义如下方法:
def foo *args
end
...以及使用单个参数调用时:
foo 'a', 'b', 'c'
...那些最终foo
位于数组中的方法内部args
-这对于包装另一个方法非常方便,例如
def some_method *args
do_something args.first
super *args # call the superclass's `some_method` with whatever args it would have received
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句