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来写呢2_Kotlin_Idioms - Fatal编程技术网

我该如何用惯用的Kotlin来写呢2

我该如何用惯用的Kotlin来写呢2,kotlin,idioms,Kotlin,Idioms,我问了一个问题: 现在我有了一个简单的想法,这个成语。如下 private fun getTouchX(): Int = when(arguments) containsKey(KEY_DOWN_X) -> getInt(KEY_DOWN_X) else -> centerX() } containsKey和getInt是参数的方法 当然,这不是when的正确用法 有什么可能的方法可以做到这一点吗 arguments是Android框架中的Bundle类。

我问了一个问题:

现在我有了一个简单的想法,这个成语。如下

private fun getTouchX(): Int = when(arguments) 
     containsKey(KEY_DOWN_X) -> getInt(KEY_DOWN_X)
     else -> centerX() 
}
containsKey
getInt
参数的方法

当然,这不是
when
的正确用法
有什么可能的方法可以做到这一点吗

arguments是Android框架中的Bundle类。 你可以在下面看到

根据您提供的信息,我只能给您以下答案:

private fun getTouchX(): Int = arguments.run {
    if (containsKey(KEY_DOWN_X)) getInt(KEY_DOWN_X)
    else centerX()
}
如果
参数
可为空,则可以如下所示:

private fun getTouchX(): Int = arguments?.run {
    if (containsKey(KEY_DOWN_X)) getInt(KEY_DOWN_X)
    else null
} ?: centerX()

感谢@ice1000的回答。 我知道下面的成语也有可能

private fun getTouchX(): Int = arguments?.run {
    when {
        containsKey(KEY_DOWN_X) -> getInt(KEY_DOWN_X)
        else -> null
    }
} ?: centerX()

如果有3个以上的谓词条件(如果x 3)

您没有说明
参数的类型,我可能会使用它,这使得这个问题成为一个猜测游戏。再次感谢您的建议。@leoderprofi。我添加了更多关于争论的信息。哦,太好了。我不知道run可以返回值。谢谢您!