【问题标题】:What does an asterisk in front of a constant mean? [duplicate]常数前面的星号是什么意思? [复制]
【发布时间】:2015-05-23 06:33:28
【问题描述】:

我看到了*MyModel::MY_CONSTANT

它在 MyModel 中引用了这个:

  MY_CONSTANT = [
    :a_field,
    :another_field,
  [

当被称为

permit(:name, *MyModel::MY_CONSTANT)

它扩展到

permit(:name, :a_field, :b_field)

但是刚刚发生了什么?

【问题讨论】:

标签: ruby-on-rails ruby arrays


【解决方案1】:

我希望它实际上扩展为permit(:name, :a_field, :another_field) :) 但是,基本上这就是它在数组上使用时所做的事情,它获取数组的值并将它们扩展出来,就好像它们作为单独的参数提供一样。因此,您可以获取这些数组元素并将它们发送到需要单个参数的方法中。

你也可以逆向使用,你可以定义如下方法:

def foo *args
end

...当它被单独的参数调用时:

foo 'a', 'b', 'c'

...那些最终在数组args 中的foo 方法中 - 这对于包装另一个方法非常方便,例如。

def some_method *args
  do_something args.first
  super *args   # call the superclass's `some_method` with whatever args it would have received
end

更新

顺便说一句,here's the official docs 关于这个运营商。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 2023-04-03
    • 2016-12-15
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2018-11-21
    • 2017-03-25
    相关资源
    最近更新 更多