【问题标题】:ruby code: why put colon in front of variable name (inside initialize method)ruby 代码:为什么在变量名前面加上冒号(在初始化方法中)
【发布时间】:2016-11-03 10:55:46
【问题描述】:

我遇到了一些 Ruby 代码, 我试图理解为什么变量在 initialize 方法的声明中的名称末尾有冒号。

冒号有什么原因吗?

attr_reader :var1, :var2

def initialize(var1:, var2:)
   @var1 = var1
   @var2 = var2
end

【问题讨论】:

    标签: ruby


    【解决方案1】:

    这些是关键字参数。

    您可以按名称而不是位置来使用它们。例如

    ThatClass.new(var1: 42, var2: "foo")
    

    ThatClass.new(var2: "foo", var1: 42)
    

    An article about keyword arguments by thoughtbot

    【讨论】:

      【解决方案2】:

      它被称为keyword arguments

      关键字参数类似于默认的位置参数 价值观:

      def add_values(first: 1, second: 2)
        first + second
      end
      

      任意关键字参数将被 ** 接受:

      def gather_arguments(first: nil, **rest)
        p first, rest
      end
      
      
      gather_arguments first: 1, second: 2, third: 3
      # prints 1 then {:second=>2, :third=>3}
      

      当使用关键字参数调用方法时,参数可能会出现 以任何顺序。如果调用者发送了一个未知的关键字参数 引发 ArgumentError。

      当混合关键字参数和位置参数时,所有位置参数 参数必须出现在任何关键字参数之前。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        • 2020-09-02
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多