let documentUrl: NSURL? = {
return NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first
}
var test: String = {
return "String"
}
这是一段非常简单的代码,但是 Xcode 出现错误,要求我在计算属性的末尾添加 (),如下所示:
let documentUrl: NSURL? = {
return NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first
}()
var test: String = {
return "String"
}()
谁能告诉我为什么?
最佳答案
你写了这个:
var test: String = {
return "String"
}
那不是计算属性。您正在将变量 test
初始化为函数体(匿名函数,有时称为闭包)。那不是你的意思。您想要调用 函数并将变量test
设置为结果。括号使它发生;这就是您调用函数的方式。因此:
var test: String = {
return "String"
}()
这样你就定义了函数并调用它,所有这些都是一步到位的,并将结果赋给test
的初始值。
如果你想要一个计算属性,你应该这样写:
var test: String {
return "String"
}
注意没有等号。更完整的形式是:
var test: String {
get {
return "String"
}
}
关于ios - 函数产生预期类型 "String",你的意思是用 "()"调用它吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749231/