1

尝试从延迟存储属性中的函数返回值时,我收到一条错误消息,提示“无法将'String' 类型的值转换为'Test' 类型的参数”。我无法在惰性 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)
    }() 
}
4

1 回答 1

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)
    }() 
}
于 2015-11-26T18:25:32.663 回答