我需要访问嵌套枚举上定义的函数。我的设置如下:
var currentlyShowingStepIndex:Int?
var allSetupSteps:[SetupStep] = []
enum SetupStep {
case districtSetupStep(DistrictSetupStep), toolSetupStep(ToolSetupStep)
enum DistrictSetupStep {
case one, two, three
}
enum ToolSetupStep {
case one, two, three
func accessMe() -> Int {
switch self {
case one:
return 1
case two:
return 2
case three:
return 3
}
}
}
}
if let index = currentlyShowingStepIndex {
let currentStep = allSetupSteps[index]
switch currentStep {
case .districtSetupStep(_):
print("asdf")
// **** I have no idea for the syntax of the following, the code below does not work *****
case .toolSetupStep(_) let toolStep:
let numberNeeded = toolStep.accessMe()
}
}
我正在尝试获取上面的值“numberNeeded”,但我不知道访问它的语法是什么,或者是否可能。
您可以使用两种语法访问此函数及其关联值。
第一:
case .toolSetupStep(let toolStep):
这是一种常见的方法,但它有一个缺点,如果您有许多关联值,则必须用
let
或 var
标记所有这些值。当我们的属性既不是 let
也不是 var
时,这很有用,这样您就可以灵活地标记每个属性。
第二:(我最喜欢的一个)
我们在枚举大小写前加上我们需要的类型值(
let
或var
)。
通过这种方式,您可以根据需要定义关联值,而无需为每个值添加其值类型前缀。
case let .toolSetupStep(toolStep):
//your code using tollStep
假设我们在 toolSetupStep 有 3 个关联值,我们可以轻松地使用它们:
case let .toolSetupStep(toolStep,toolStep2,toolStep3):