Странное поведение для инициализации параметров метода по умолчанию - PullRequest
0 голосов
/ 08 марта 2019

Когда я пытаюсь инициализировать это, он работает отлично

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 Ответ

2 голосов
/ 08 марта 2019

Согласно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...