Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 相同的属性和方法返回不同的值_Kotlin_Methods_Properties - Fatal编程技术网

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