首页 > 解决方案 > 带功能/操作器类型的开关/外壳

问题描述

我想用运算符实现一个 switch 语句,如下所示:

let op: (Int, Int) = Random.choice([(+), (-), (*)])

switch op {
case (+): // Compiler error
    print("addition")
default: 
    break
}

但它给出了错误:

'_' 类型的表达式模式不能匹配 '(Int, Int) -> Int' 类型的值

我尝试过语法变化:

case +: // Another compiler error

一元运算符后的预期表达式

因此,看起来编译器甚至无法识别case. 是否可以使这样的 switch 语句起作用?

PS 我对伪解决方案不感兴趣,比如使用随机数而不是运算符或为它们创建包装类。

标签: swiftswitch-statementoperators

解决方案


推荐阅读