方法默认参数初始化的奇怪行为

时间:2019-03-08 10:17:38

标签: ruby-on-rails ruby syntax

当我尝试初始化它时,它工作得很好

class Abc
  def initialize(parent_id, user = nil, permission)
  end
end

Abc.new(1 ,2, "some_permission")

但是当我这样做

  class Abc
    def initialize(parent_id, user = nil, permission, g_data = nil)    
    end
  end

Abc.new(1,2,“ some_permission”,4)

我收到语法错误语法错误,意外的'=',期望的是')' 这是一个奇怪的行为,为什么它不使用两个默认值为nil

的参数

1 个答案:

答案 0 :(得分:2)

根据红宝石documentation,应将默认值分组。

  

默认值不需要首先出现,但是带有   默认值必须组合在一起。

因此,根据此规则,您的方法参数应如下列出:

  class Abc
    def initialize(parent_id, user = nil,g_data = nil,permission)    
    end

    # OR
    def initialize(parent_id, permission,user = nil,g_data = nil)    
    end
  end