我正在try Kotlin,希望为Activity实现一个惰性扩展属性:

/**
 * Activity module
 */
val Activity.activityModule: ActivityModule by lazy {
    ActivityModule(this)
}

The compiler errors with:

'this' is not defined in this context

我怎样才能将此活动定义为此活动?我读了a guide本,但没读到.this@Activity号表示,该参考资料尚未解决.

推荐答案

The lazy delegate in Kotlin doesn't have reference to a property member class.

I see two solutions:

  1. 将其转换为扩展函数
  2. 实现自己的委托

Kotlin相关问答推荐

如何在使用Kotlin Coroutines时检测和记录何时出现背压

调用即发即忘方法--哪个作用域?

Regex(Kotlin)仅匹配句子末尾的句号,而忽略中间的句号,如缩写

为什么onEach不是挂起函数,而Collect是?

Kotlin中一个接口的实现问题

Scala性状线性化等价于Kotlin

在 kotlin 原始字符串中转义三重引号

如何访问嵌套在另一个 map 中的 map 中的值(在 kotlin 中)

Kotlin 插件之间的区别

奇怪的 cotlin check Not Null 参数错误

如何使用 gradle 脚本 Kotlin 构建文件构建可运行的 ShadowJar?

在构造函数中仅注入某些参数

Kotlin - 覆盖方法中的 IllegalArgumentException

Dagger2 Qualifier 不适用于 Kotlin?

什么是开放式property?为什么我不能将其设置器设为private私有?

Kotlin通过映射委托属性,如果映射中不存在,则抛出NoTouchElementException

使用 rxbinding 时我应该取消订阅吗?

lateinit 的 isInitialized 属性在伴随对象中不起作用

在 Kotlin 中声明 Byte 会出现编译时错误The integer literal does not conform to the expected type Byte

类型推断失败:RecyclerViewActions.scrollTo()