【发布时间】:2016-07-10 16:02:37
【问题描述】:
我想创建一个可以用两种不同方式初始化的对象。我找到了 3 种不同的方法来完成同一件事,我想知道我的哪种方法是最好的,以及是否有另一种更好的方法。
方法
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
方法二:(注意我需要在这一种上手动设置参数作为第二种方式)
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
提前致谢!
【问题讨论】:
-
他们有什么论据?
-
Method 2: (note that I need to set the parameters by hand on this one as second way)第二种方法/方式遵循第二种方式不是很明显吗? -
@sawa 也许我需要更清楚一些。它需要一个带有 id、status 和 dateTime 的哈希,或者我可以初始化一个不带参数的对象并说 object.id = "an id" 等。
标签: ruby constructor