2009-09-13 24 views
0
def add app 
    @has_app[app] = true 
    @apps << app 
end 

the code above,而是採用使用include?而不是跟蹤

@has_app[app] = true 

跟蹤「應用」的存在,不能我們也說:

@apps.include? (app) 

和做掉與@has_app

我想明白爲什麼在這裏需要這個單獨的變量(?)。

回答

1

如果是這種代碼的程度,那麼是的,你可以簡單地使用include?方法。這是多餘的數據。不過,它可能是這種布爾值的散列有一些不同的含義,從這些代碼行中不清楚。

會有一個性能差異(對於大型列表),因爲隨着大小的增加,哈希查找比數組查找更快。 (如果這很重要,你需要仔細檢查Ruby細節)。

1

帶問號的方法只是檢查變量的狀態而不是修改它。因此@apps.include?(app)將根據具有給定對象的數組返回true或false。

0

是的,我同意你的意見。 @has_app?不是必須的。我能想到爲什麼原始編碼器使用它的唯一原因就是出於性能考慮。需要注意的是:

@has_app is a Hash 
@app is an Array.