[英]Cannot convert value of type '() -> _' to specified type 'Bool'
为什么这段代码给我上面的编译时错误?
var results = [[String:Bool]]()
var isSuccessful:Bool =
{
for (index, element) in results.enumerated()
{
if element.values.contains(false) { return false }
}
return true
}
只需删除=
符号
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)计算属性:
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
}()
两者都是正确的。 选择您需要的那个。
语义上:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.