2つの異なる方法で初期化できるオブジェクトを作成したいと思います。私は同じことを達成する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:(Iは第二の方法として、このいずれかを手動でパラメータを設定する必要があることに注意)
attr_accessor :id, :status, :dateTime
def initialize hash = nil
if hash != nil
@id = hash['id']
@status = hash['status']
@dateTime = hash['dateTime']
end
end
方法3:(I設定する必要があることに注意してくださいこのパラメータを手作業で2番目の方法として手に入れ、それはコンストラクタではなく、私の2番目の方法とほぼ同じです)
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:(これを手作業でパラメータを設定する必要があることに注意してください)' 2番目の方法/方法は2番目の方法に従うことは明白ではありませんか? – sawa
@澤私はもっと明確にする必要があったかもしれません。 id、status、dateTimeのハッシュを取るか、パラメータなしでオブジェクトを初期化し、object.id = "id"などと言うことができます。 –