2016-10-22 73 views
0

我有一個需要isIncluded參數,然後傳遞給filter的API。我想包括每個項目,所以我寫了這個:所以我寫了這個:是否有標準的方法來過濾所有項目

object.read(isIncluded: { _ in true }) 

這不令我感到滿意。我想讓一些東西更具表現力,所以我寫了下面的函數。

func always<T>(t: T) -> Bool { return true } 

所以我有一個非常漂亮的

object.read(isIncluded: always) 

後來我想應該有一個內置在做的正是這一點,但我無法找到一個。

我錯過了標準庫中的東西。標準庫中是否有更好的方法來編寫它?

+1

Swift標準庫試圖實現實現Swifts目標所需的最低級別的功能。通過這種方式,運行時二進制文件在與應用程序一起發佈時很小(這是必需的,直到實現了ABI穩定性),並且實現該庫更容易。他們避免寫這樣的東西來實現自己的微不足道。 (例如,也沒有標識函數,因爲只需編寫'{$ 0}'是非常簡單的) – Alexander

回答

0

您可以從封閉下降的參數定義,這樣就可以縮短你的第一個例子是:

object.read(isIncluded:{true}) 
0

對於您不希望過濾,也許只是提供一個默認的情況:

func read(isIncluded: (Object) -> Bool = {true}) { ... } 

然後,您可以將其稱爲Object.read()而不必包含該isIncluded: {true}過濾器。

相關問題