gpt4 book ai didi

调用方法的 Swift 枚举

转载 作者:可可西里 更新时间:2023-11-01 00:36:38 26 4
gpt4 key购买 nike

假设我有一个这样的枚举:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com