Swift switch case let 语法 - 访问嵌套枚举上定义的函数

问题描述 投票:0回答:1

我需要访问嵌套枚举上定义的函数。我的设置如下:

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”,但我不知道访问它的语法是什么,或者是否可能。

swift enums switch-statement
1个回答
0
投票

您可以使用两种语法访问此函数及其关联值。


第一

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):
© www.soinside.com 2019 - 2024. All rights reserved.