有人能解释一下Swift中的以下行为吗?
func test() -> Bool {
print("1 before return")
return false
print("1 after return")
}
func test2() {
print("2 before return")
return
print("2 after return")
}
test()
test2()
Run Code Online (Sandbox Code Playgroud)
收益:
1 before return
2 before return
2 after return
Run Code Online (Sandbox Code Playgroud)
我希望print("2 after return")永远不会执行,因为它是在一个return声明之后.
有什么我想念的吗?
(使用Swift 4/4.1和Xcode 9.2/Xcode 9.3 beta 2测试)
use*_*240 12
这是一个棘手的事情,Swift不需要分号(它们可选地使用),这使得Swift编译器自动推断出下一行应该是新行还是旧行完成.print()是一个返回void的函数.所以这个词return print("something")是有效的.所以
return
print("Something")
Run Code Online (Sandbox Code Playgroud)
可以推断为 return print("Something")
你的解决方案是写
return;
print("Something")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |