Kotlin 相同的属性和方法返回不同的值
我有以下代码片段:Kotlin 相同的属性和方法返回不同的值,kotlin,methods,properties,Kotlin,Methods,Properties,我有以下代码片段: override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view=inflater.inflate(R.layout.fragment_tab_packs,container,false) view.do
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view=inflater.inflate(R.layout.fragment_tab_packs,container,false)
view.doOnLayout {
val f1=isRemoving //false
val f2=context==null //false
val f3=activity == null //false
val f4=isDetached //false
val f5=!isAdded //false
val f6= this.view == null //false
val safe1=isSafe //false
val safe2=isSafe() //true(!!!)
if(isSafe) {
init()
}
}
return view
}
private val isSafe: Boolean=!(isRemoving || context==null || activity == null || isDetached || !isAdded || view == null)
private fun isSafe(): Boolean=!(isRemoving || context==null || activity == null || isDetached || !isAdded || view == null)
我从调试器的注释中获得了值。
isSafe
和isSafe()
包含相同的逻辑。它们如何返回不同的值?因为分配给isSafe
的表达式是在构建片段实例时计算的,之后保持不变,isSafe()的返回值是
每次被调用时都会重新求值。因为分配给isSafe
的表达式在构建片段实例时求值,之后保持不变,而isSafe()的返回值
每次调用时都会重新求值。虽然这不是一个getter,但实际上这不是一个getter