我的代码实际上有效,但我不确定这是否是正确的方法。它的目的是允许每天只修改一次文件。有很多代码,但大致看起来像这样:
class Something
def initialize
if file_modified_today
load_file
#it loads variables from a file
else
@aaa = rand(1..30)
# ... lots of other variable assignments
end
end
def file_modified_today
#returns true or false
end
def load_file
#reads and loads variables from a file
end
end
我希望我的代码不会混淆。我的问题是,这种初始化类的方式是错误的吗?我可能想到一种从初始化中删除if-else和方法调用的方法,可能是定义类方法,并在创建实例之前使用它
答案 0 :(得分:0)
我不完全确定你到底想做什么。但是,这不是initialize
对象的最佳方式。
为什么不尝试创建一个类方法呢?
class Something
def initialize
@aaa = rand(1..30)
end
def self.file
if file_modified_today?
load_file
else
new() # initialize a new object
end
end
def self.load_file
#reads and loads variables from a file
end
private
def file_modified_today?
#returns true or false
end
end
但是,您可能会考虑采用不同的方法。似乎您只想在当天修改文件时加载文件。你可以在#load_file
方法中处理它。这使#file
方法过时了。因此,在这种情况下,如果修改了创建新对象的文件,则可以加载文件。
load_file if file_modified_today?