为了更好地理解swift,我想看看是否有更有效的方法来编写下面的代码.代码应该采用self.categories字符串,将其转换为数组(以逗号分隔的值),并在返回数组之前修剪每个值.
func get_categories() -> Array{ let categories = self.categories!.componentsSeparatedByString(",") var categories_to_return = Array () for category in categories { categories_to_return.append(category.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())) } return categories_to_return }
我怀疑我在这里做错了 - 也许我不需要创建两个单独的数组?也许还有另一条我以前从未见过的捷径?提前谢谢了!
你可以map
直接使用这样的结果componentsSeparatedByString
,并在不使用其他变量的情况下返回它:
func get_categories() -> Array{ return self.categories!.componentsSeparatedByString(",").map { $0.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) } }
注意:在map
闭包中,$0
表示组件数组中的当前项.它也可以这样写:
func get_categories() -> Array{ return self.categories! .componentsSeparatedByString(",") .map { word in word.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) } }