Cra*_*tis 2 functional-programming swift
说我有一个简单的Ingredient类:
class Ingredient {
let section : String // 'Produce', 'Spices', 'Dairy', 'Grains'
}
Run Code Online (Sandbox Code Playgroud)
我有一堆Ingredient物品:
var ingredients : [Ingredient] = ...
Run Code Online (Sandbox Code Playgroud)
我想从这些成分中收集不同部分的数量.
我可以在Java中通过(依赖于Set类型的自动聚集)来做到这一点:
ingredients.stream().map(Ingredient::getSection).collect(Collectors.toSet()).count()
Run Code Online (Sandbox Code Playgroud)
或者,使用distinct()方法:
ingredients.stream().map(Ingredient::getSection).distinct().count()
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种方法在Swift中做一个类似的单线程.我做过的一些研究表明人们编写自己的方法来收集不同的值,但我希望有一个distinct()或者Set收集Swift类型的方法.
当然,您可以通过映射您的成分数组以提取一系列部分来以相同的方式执行此操作 - 然后您可以将这些转换为a Set并获取计数,从而为您提供不同部分的数量.
let distinctSections = Set(ingredients.map{$0.section}).count
Run Code Online (Sandbox Code Playgroud)