Boolean - Kotlin中的Int转换

pav*_*163 28 kotlin

在Kotlin中没有内置的方法来转换boolean - int吗?我说的是平时:

true -> 1
false -> 0
Run Code Online (Sandbox Code Playgroud)

如果没有,那么这是一种惯用的方法吗?

asc*_*sco 54

你可以写一个像Boolean这样的扩展函数

fun Boolean.toInt() = if (this) 1 else 0
Run Code Online (Sandbox Code Playgroud)

  • @AndroidGuy 不,请不要!这与通常的 C 逻辑略有不同,其中非 0 或 1 的整数被认为是 true。更好的说法是: Int.toBoolean() = this != 0 (3认同)

小智 16

为每个项目为此任务编写函数可能有点乏味。有一个 kotlin 函数,您可以使用它来实现此目的。

compareTo如果变量是大于输入它将输出1,如果等于它会输出0,并且如果小于输入它将输出-1

所以你可以像这样使用它来完成这个任务:

v.compareTo(false) // 0 or 1
Run Code Online (Sandbox Code Playgroud)

  • 值得补充的是,如果“true”是参数(“输入”),那么结果要么是“false.compareTo(true)”的 **`-1`**,要么是“true”的 **`0`** .compareTo(true)` 在大多数情况下没有帮助。(所以“false”必须是参数。) (7认同)

s1m*_*nw1 9

在这种情况下,您可以Boolean使用扩展属性进行扩展:

val Boolean.int 
     get() = if (this) 1 else 0
Run Code Online (Sandbox Code Playgroud)

现在您只需true.int在代码中执行操作即可