Ich möchte ein Objekt erstellen, das auf zwei verschiedene Arten initialisiert werden kann. Ich habe 3 verschiedene Wege gefunden, dasselbe zu erreichen, ich möchte wissen, welche meiner Methoden die beste ist, und ob es eine andere, bessere Methode gibt.Ruby-Klasse Initialisierung
Methode
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
Methode 2: (beachten Sie, dass ich die Parameter von Hand auf diesen einen als zweiten Weg festlegen müssen)
attr_accessor :id, :status, :dateTime
def initialize hash = nil
if hash != nil
@id = hash['id']
@status = hash['status']
@dateTime = hash['dateTime']
end
end
Methode 3: (beachten Sie, dass I gesetzt müssen die Parameter von Hand auf diesem ein als zweite Art und Weise, und dass es fast die gleiche wie meine zweite Art und Weise, nur nicht im Konstruktor)
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
Vielen Dank im Voraus!
Welche Argumente nehmen sie? – sawa
'Methode 2: (Bitte beachten Sie, dass ich die Parameter manuell als zweite Methode einstellen muss)' Ist es nicht offensichtlich, dass die zweite Methode/Weise der zweiten folgt? – sawa
@sawa Vielleicht musste ich klarer sein. Es dauert ein Hash mit ID, Status und dateTime ODER ich könnte ein Objekt ohne Parameter initialisieren und sagen object.id = "eine ID" usw. –