使用雨燕
问题描述:
枚举和阵列我已经宣布枚举使用雨燕
enum MenuItem {
case Item(String, Bool)
}
我有这样的数组枚举
let menuList = [
MenuItem.Item("Title_1", true),
MenuItem.Item("Title_2", false),
MenuItem.Item("Title_3", true),
]
现在,从上面的阵列如何获取字符串数组?
["Title_1", "Title_2", "Title_3"]
答
如果你只是想从你的阵列筛选出Item
案件,并得到了弦从它们的相关值的数组,你可以使用flatMap
和pattern matching实现这一目标。例如:
// your array of enums
let menuList = [
MenuItem.Item("Title_1", true),
MenuItem.Item("Title_2", false),
MenuItem.Item("Title_3", true),
]
let arrayOfStrings:[String] = menuList.flatMap {
// if the element is of case .Item, return its string from the associated value
if case .Item(let str, _) = $0 {return str}
// else return nil (flatMap will filter out nil from the resultant array)
return nil
}
print(arrayOfStrings) // ["Title_1", "Title_2", "Title_3"]
虽然我不得不质疑你在这里使用枚举。如果它只有一个case,那么struct会更合适(我不确定是否为了这个问题简化了它)。
我不确定枚举是不是最好的选择,我认为有两个变量的结构会更好。 – EmilioPelaez