首页 > 解决方案 > 方法默认参数初始化的奇怪行为

问题描述

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

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

标签: ruby-on-railsrubysyntax

解决方案


根据 ruby​​ 文档,应该对默认值进行分组。

默认值不需要首先出现,但具有默认值的参数必须组合在一起。

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

  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

推荐阅读