Kotlin中的布尔-整数转换

Kotlin中的布尔-整数转换,kotlin,Kotlin,Kotlin中是否没有内置的方式在boolean-int之间进行转换?我说的是通常的情况: true -> 1 false -> 0 如果不是,什么是惯用的方法呢?不,没有转换的方法。您只能通过以下代码进行转换 val output = if (input) 1 else 0 可以编写类似布尔函数的扩展函数 fun Boolean.toInt() = if (this) 1 else 0 向API发出请求,该API为字段返回0或1,该字段应明显为真/假。同时,我还针对同一类型

Kotlin中是否没有内置的方式在boolean-int之间进行转换?我说的是通常的情况:

true -> 1
false -> 0

如果不是,什么是惯用的方法呢?

不,没有转换的方法。您只能通过以下代码进行转换

 val output = if (input) 1 else 0

可以编写类似布尔函数的扩展函数

fun Boolean.toInt() = if (this) 1 else 0

向API发出请求,该API为字段返回0或1,该字段应明显为真/假。同时,我还针对同一类型的字段向类似的API发出其他请求,返回true/false。我想分享处理来自所有API的响应的代码

在这种情况下,我认为使用映射库的转换器(jackson等)将是最好的选择


在普通Kotlin中,您可以为此使用扩展函数/属性。

在这种情况下,您可以使用扩展属性扩展
布尔值

val Boolean.int 
     get() = if (this) 1 else 0
现在,您只需在代码中执行
true.int
,使用以下命令:

val Boolean?.int
    get() = if (this != null && this) 1 else 0

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

使用
compareTo
如果变量大于输入,则输出1,如果等于输入,则输出0,如果小于输入,则输出-1

因此,您可以将其用于以下任务:

v.compareTo(false) // 0 or 1

这方面的用例是什么?向API发出请求,该API为一个字段返回0或1,该字段应明显为真/假。同时,我还针对同一类型的字段向类似的API发出其他请求,返回true/false。我想分享处理来自所有API的响应的代码。类似地,在Kotlin中将Int转换为Boolean:fun Int.toBoolean()=这==1非常干净的解决方案。值得补充的是,如果
true
是参数(“输入”),然后,对于
false,结果是
-1
。比较到(true)
,或者对于
true,结果是
0
。比较到(true)
,这在大多数情况下都没有帮助。(因此,
false
必须是参数。)