为什么这段代码会给我上面的编译时错误?
var results = [[String:Bool]]()
var isSuccessful:Bool =
{
for (index, element) in results.enumerated()
{
if element.values.contains(false) { return false }
}
return true
}
答案 0 :(得分:1)
只需删除=
标志
var isSuccessful:Bool {
get {
for (index, element) in results.enumerated()
{
if element.values.contains(false) { return false }
}
return true
}
}
如果您使用=
符号,则需要为变量“赋值”。
这是延迟var初始化的常见错误
lazy var isSuccessful:Bool = {
for (index, element) in results.enumerated()
{
if element.values.contains(false) { return false }
}
return true
}()
当您第一次获得变量时,此语法将处理块。
答案 1 :(得分:1)
有两种情况。
1)计算属性:
var isSuccessful:Bool
{
for (index, element) in results.enumerated()
{
if element.values.contains(false) { return false }
}
return true
}
2)懒惰变量:
lazy var isSuccessful : Bool =
{
for (index, element) in results.enumerated()
{
if element.values.contains(false) { return false }
}
return true
}()
两者都是正确的。选择你需要的那个。
语义: