委托给初始化属性时,“必须初始化变量”错误

时间:2017-11-20 12:18:01

标签: kotlin

object Foo : CharSequence by Foo.X {
    val X = ""
}

生成

Variable 'X' must be initialized

但它确实是!代码应转换为类似

的内容
object Foo : CharSequence {
    val X = ""
    override val length get() = Foo.X.length
    override operator fun get(index: Int): Char = Foo.X[index]
    override fun subSequence(startIndex: Int, endIndex: Int) = Foo.X.subSequence(startIndex, endIndex)
}

运作良好。

错误的原因是什么,是否有解决方法?在实际代码中,初始化非常重要,Foo需要是object(实际上是伴随对象),而不是class

1 个答案:

答案 0 :(得分:1)

我推测在对象上使用类委托有点不明显,所以这可能是为什么的本质。

解决方法是直接委托给String实例。这段代码适合我:

String

除此之外:Kotlin中的public async getPosts(): Promise<Post[] | undefined> { // notice `undefined` try { const response = await this._http.get<Post[]>(this._baseUrl + "api/JsonPlaceholder/GetPosts"); return response.toPromise(); } catch (error) { await this.handleError(error); } } 没有构造函数接受String参数。奇怪,那个。