def add app
@has_app[app] = true
@apps << app
end
在the code above中,而不是使用
@has_app[app] = true
要跟踪'app'的存在,我们也不能说:
@apps.include? (app)
并取消@has_app
?
我试图理解为什么这里需要这个单独的变量(?)。
答案 0 :(得分:1)
带问号的方法只检查变量的状态而不是修改它。因此,@apps.include?(app)
将返回true或false,具体取决于具有给定对象的数组。
答案 1 :(得分:1)
如果这是代码的范围,那么是的,您可以简单地使用include?
方法。这是冗余数据。但是,可能是这种布尔值的哈希值具有一些不同的含义,而这些含义并不清楚。
存在性能差异(对于大型列表),因为随着大小的增加,哈希查找比数组查找更快。 (如果这很重要,你需要仔细检查Ruby细节)。
答案 2 :(得分:0)
是的,我同意你的看法。 @has_app?不是必须的。我能想到为什么原始编码器使用它的唯一原因是出于性能的考虑。请注意:
@has_app is a Hash
@app is an Array.