我收到错误消息“"无法转换类型'字符串'参数类型'测试'"尝试从惰性存储属性中的函数返回值时。我无法在懒惰的var闭包中发现任何问题。
import UIKit
public struct Value {}
public class Test {
var id: String = ""
public func getValueById(id: String) -> Value {
return Value()
}
public lazy var value: Value = {
// Compiler error: Cannot convert value of 'String' to expected argument type 'Test'
return getValueById(self.id)
}()
}
答案 0 :(得分:2)
编译器对getValueById
感到困惑,错误消息毫无意义 - 如果不是误导性的话。
您需要在封闭内的self
前添加getValueById(self.id)
:
public struct Value {}
public class Test {
var id: String = ""
public func getValueById(id: String) -> Value {
return Value()
}
public lazy var value: Value = {
return self.getValueById(self.id)
}()
}