当前位置:  开发笔记 > 编程语言 > 正文

Swift中的枚举模式匹配

如何解决《Swift中的枚举模式匹配》经验,为你挑选了1个好方法。

我刚开始学习Swift并尝试理解模式匹配.

我找到了下一个例子:

private enum Entities{
  case Operand(Double)
  case UnaryOperation(Double -> Double)
  case BinaryOperation((Double, Double) -> Double)
}

后来我使用模式匹配来确定实体的类型

func evaluate(entity: Entities) -> Double? {
    switch entity{
    case .Operand(let operand):
        return operand;

    case .UnaryOperation(let operation):
        return operation(prevExtractedOperand1);

    case .BynaryOperation(let operation):
        return operation(prevExtractedOperand1, prevExtractedOperand2);
    }
}

获取相关值的语法似乎有点奇怪,但它工作正常.

之后我发现,在if语句中可以使用模式匹配,所以我试着用同样的方法if

if case entity = .Operand(let operand){
    return operand
}

但编译器抛出错误预期','分隔符,我怀疑,这与错误的真正原因没有任何共同之处.

你能不能帮助我理解,我在if声明中尝试使用模式匹配有什么问题?



1> Kristopher J..:

我认为你想要的语法是这样的:

if case .Operand(let operand) = entity {
    return operand
}

或这个:

if case let .Operand(operand) = entity {
    return operand
}

要绑定的变量需要=位于a中符号的左侧let.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有