【发布时间】:2014-06-05 03:27:49
【问题描述】:
我一直在看苹果提供的 The Swift Programming Language guide。 以下示例来自本书:
class HTMLElement {
let name :String;
let text: String?;
@lazy var asHTML : () -> String = {
if let text = self.text {
return "<\(self.name)>\(self.text)</\(self.name)>";
} else {
return "<\(self.name) />"
}
}
}
我错误地将闭包写成如下:
@lazy var asHTML : () -> String = {
if (let text = self.text) {
return "<\(self.name)>\(self.text)</\(self.name)>";
} else {
return "<\(self.name) />"
}
}
注意let text = self.text 周围的括号,编译器抱怨:
模式变量绑定不能出现在表达式中
只是想知道Pattern Variable Binding 是什么意思,为什么它不能出现在表达式中?
【问题讨论】:
-
在其他语言中这样做有意义吗?我不这么认为,例如
if( var name='CjCoax'){ console.log('you will notreach here') }。它的 javascript 示例,但很好地解释了你想要做什么 -
@cjcoax 在您的代码中展示了与 Objective-C 和 swift 的几个不同之处:1) ';'不需要,尽管编译器会安全地忽略它们。 2) 不需要括号(或者在这种情况下,允许在流控制语句中使用
标签: swift