猿问

swift语言的switch句式中,fallthrough后面不能直接跟带有where的case子句吗?

varx=1
switchx
{
case1:
println("x=1")
fallthrough
caseletywherey==1:
println("x==1")
default:
println("default")
}
提示错误:
fallthroughcannottransfercontroltoacaselabelthatdeclaresvariable
只能从字面上理解这句报错,谁能详细解释一下这个错误?
一只甜甜圈
浏览 486回答 2
2回答

湖上湖

错误提示已经很明白了,fallthrough下面的那个case不能声明新变量、常量,也就是不能跳转到case后面接var或者let的语句的。原因是因为fallthrough不会检查where匹配条件,这样便会导致var或者let声明的变量常量无法得到值,所以swift禁止fallthrough到这样的case中。你可以把下面的语句提前就正确了。varx=1switchx{caseletywherey==1:println("x==1")fallthroughcase1:println("x=1")default:println("default")}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答