为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只甜甜圈 2019-04-13 08:45:44
varx=1switchx{case1:println("x=1")fallthroughcaseletywherey==1:println("x==1")default:println("default")}提示错误:fallthroughcannottransfercontroltoacaselabelthatdeclaresvariable只能从字面上理解这句报错,谁能详细解释一下这个错误?
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

错误提示已经很明白了,fallthrough下面的那个case不能声明新变量、常量,也就是不能跳转到case后面接var或者let的语句的。
原因是因为fallthrough不会检查where匹配条件,这样便会导致var或者let声明的变量常量无法得到值,所以swift禁止fallthrough到这样的case中。
你可以把下面的语句提前就正确了。
varx=1
switchx
{
caseletywherey==1:
println("x==1")
fallthrough
case1:
println("x=1")
default:
println("default")
}
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信