此功能:
let months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
for month in months {
switch month {
case month == 1: print("January")
case month == 2: print("February")
case month == 2: print("March")
default: print("Not Q1")
}
}
正在返回此错误:
“Bool”类型的表达式模式不能匹配“Int”类型的值
为什么?
答案 0 :(得分:0)
更改为:
let months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
for month in months {
switch month {
case 1: print("January")
case 2: print("February")
case 3: print("March")
default: print("Not Q1")
}
}
答案 1 :(得分:0)
switch语句需要对已经“切换”的变量进行处理。在这种情况下,您在数组月份上放置了一个开关,这是一个整数数组。您在switch语句中的案例是布尔值,因为month == 1
的计算结果为true或false;但是这些案例需要是整数值才能使此switch语句生效。因此,将case month == 1: print("January")
语句替换为case 1: print("January")
应该可以解决问题。修复后,您的代码应该如下所示。
let months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
for month in months {
switch month {
case 1: print("January")
case 2: print("February")
case 3: print("March")
default: print("Not Q1")
}
}
答案 2 :(得分:0)
要回答关于您为什么会看到该错误的问题,因为switch
语句将您正在启用的内容与相同类型的可能值进行比较。在您的示例中,您启用的内容(month
)是Int
。因此,case
值也必须为Int
s。 month == 1
是Bool
,而不是Int
。
以下是switch
语句的Swift文档:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html