作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我有一个这样的枚举:
enum ItemType {
case TypeOne
case TypeTwo
case TypeThree
}
然后我有一个方法可以根据所选的 ItemType
调用另一个方法:
func getItem(withType: ItemType) {
switch withType {
case TypeOne:
getTypeOneItem()
case TypeTwo:
getTypeTwoItem()
case TypeThree:
getTypeThreeItem()
}
}
我只是想知道是否有更好的写法,如果我有很多 ItemTypes
switch 语句会变得非常困惑。
不确定是否可能,但也许是一个直接调用方法的 enum
enum xx { case TypeOne: ?? = getTypeOneItem() ...
最佳答案
一个简单的解决方案是使用枚举作为字典的键。假设它们都是空的。你可以这样做:
import Foundation
enum ItemType
{
case TypeOne
case TypeTwo
case TypeThree
}
func getTypeOneItem() -> Void
{
print("One")
}
func getTypeTwoItem() -> Void
{
print("Two")
}
func getTypeThreeItem() -> Void
{
print("Three")
}
// Register all the enum values
let dict = [ItemType.TypeOne: getTypeOneItem, ItemType.TypeTwo: getTypeTwoItem, ItemType.TypeThree: getTypeThreeItem]
// Fetch
let function1 = dict[ItemType.TypeOne]!
function1() // This prints "One"
对我来说,它看起来比使用 switch 更干净。
关于调用方法的 Swift 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36858411/
我是一名优秀的程序员,十分优秀!