在这个结构中遇到这个问题,在读取的行上 " lazy var townSize:Size = {"并且无法弄清问题是什么。
# create test list
temp <- list("v1"=list("A"=1:4,"B"=5:7,"C"=1:8), "v2"=list("A"=1:3,"B"=5:10,"C"=3:8))
# get a list of zeros with the same dimension
answer <- lapply(temp, function(x) sapply(x, function(y) rep(0, length(y))))
答案 0 :(得分:11)
你错误地声明了lazy var它应该像这样声明
lazy var townSize: Size = {
switch self.population {
case 0...10000:
return Size.Small
case 10001...100000:
return Size.Medium
default:
return Size.Large
}
}()
答案 1 :(得分:10)
如前所述,要使用闭包初始化存储的属性,在结束括号之后需要()
:
lazy var townSize: Size = {
switch self.population {
case 0 ... 10000:
return .Small
case 10001 ... 100000:
return .Medium
default:
return .Large
}
}()
但是,因为population
是一个变量,而不是一个常量,所以你根本不希望townSize
成为一个存储属性。相反,您希望它是计算属性,以准确反映population
:
var townSize: Size {
switch population {
case 0 ... 10000:
return .Small
case 10001 ... 100000:
return .Medium
default:
return .Large
}
}
请注意缺少=
。
如果您使用lazy
存储的媒体资源,如果population
在访问townSize
后发生变化,则townSize
不会相应地反映此情况。但是使用计算属性可以解决这个问题。