我想知道我是否正确实现了Ruby对象的重新初始化。
我有一个名为Clipboard
的类,用于保存文件夹和文件。创建新剪贴板对象时,它始终为空:没有文件夹或文件。我还有一个reset
方法,可以清除剪贴板中的所有文件夹和文件。
起初我的代码看起来很喜欢这个:
class Clipboard
def initialize
@folders = []
@files = []
end
def reset
@folders = []
@files = []
end
end
但是reset
和initialize
完全一样的事实让我烦恼。除了重置剪贴板对象与重新初始化它相同。所以我将代码更改为:
class Clipboard
def initialize
@folders = []
@files = []
end
def reset
initialize
end
end
这有效,但我想知道这是否是重新初始化对象的正确方法?我不应该从实例方法调用initialize
吗?谢谢!
答案 0 :(得分:4)
这段代码让我觉得有趣,因为从实例中调用构造函数似乎不是一种好习惯。我会简单地折射它:
class Clipboard
def initialize
setup
end
def reset
setup
end
private
def setup
@folders = []
@files = []
end
end
答案 1 :(得分:1)
它有效,但有点不同寻常。您很可能希望为构造函数添加更多功能。可能更好的是使用私有方法实际上将数组清零,然后你的意图在代码中会更清晰:
class Clipboard
def initialize
[...]
setup
[...]
end
def reset
setup
end
private
def setup
@folders, @files = [], []
end
end