Kotlin中的布尔-整数转换
Kotlin中是否没有内置的方式在boolean-int之间进行转换?我说的是通常的情况: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,该字段应明显为真/假。同时,我还针对同一类型
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
必须是参数。)