Я хочу создать объект, который можно инициализировать двумя разными способами. Я нашел 3 разных способа выполнить одно и то же, я хочу знать, какой из моих методов является лучшим, и если есть еще один лучший способ сделать это.Инициализация класса Ruby
Метод
attr_accessor :id, :status, :dateTime
def initialize *args
if args.length == 1
puts args[0]
@id = args[0]['id']
@status = args[0]['status']
@dateTime = args[0]['dateTime']
else
@id = args[0]
@status = args[1]
@dateTime = args[2]
end
end
Способ 2: (заметим, что мне нужно установить параметры вручную на этом в качестве второго пути)
attr_accessor :id, :status, :dateTime
def initialize hash = nil
if hash != nil
@id = hash['id']
@status = hash['status']
@dateTime = hash['dateTime']
end
end
Способ 3: (заметим, что мне нужно установить параметры вручную на этом как второй способ и что он почти такой же, как мой второй способ, просто не в конструкторе)
attr_accessor :id, :status, :dateTime
def initialize
end
def self.create hash
if hash != nil
obj = Obj3.new
obj.id = hash['id']
obj.status = hash['status']
obj.dateTime = hash['dateTime']
return obj
end
end
Спасибо заранее!
Какие аргументы они берут? – sawa
'Метод 2: (обратите внимание, что мне нужно установить параметры вручную на этом как второй способ). Разве не очевидно, что второй метод/путь следует второму? – sawa
@sawa Возможно, мне нужно было быть более ясным. Он принимает хэш с идентификатором, статусом и dateTime ИЛИ я мог бы инициализировать объект без параметров и сказать object.id = "id" и т. Д. –