Tag: 懒惰评估

Kotlin:val,或者可以设置一次的var

只是好奇:在Kotlin,我很想得到一些可以被懒惰初始化的val,但是有一个参数。 那是因为我需要一些很晚才创建的东西来初始化它。 具体来说,我希望我有: private lateinit val controlObj:SomeView 要么: private val controlObj:SomeView by lazy { view:View->view.findViewById(…)} 接着: override fun onCreateView(….) { val view = inflate(….) controlObj = view.findViewById(…) 或者在controlObj.initWith(view)情况下controlObj.initWith(view)或类似的东西: return view 我不能by lazy使用by lazy因为by lazy不会接受初始化时要使用的外部参数。 在这个例子中 – 包含的view 。 当然,我有lateinit var但如果我能确保它只是在设置后才能读取,我可以在一行中完成。 是否有一个非常干净的方法来创建一个只读的variables,只初始化一次,但只有当其他一些variables出生? 任何init once关键字? 在init之后,编译器知道它是不可变的? 我意识到潜在的并发问题,但如果我敢于在init之前访问它,我当然应该被抛出 。