Kotlin中的布尔-整数转换

kmynzznz  于 2022-12-13  发布在  Kotlin
关注(0)|答案(7)|浏览(202)

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

true -> 1
false -> 0

如果不是,那么什么是一个惯用的方法来做到这一点?

1cklez4t

1cklez4t1#

你可以写一个布尔的扩展函数

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

u0njafvf2#

为每个项目的这个任务编写一个函数可能会有点乏味。有一个Kotlin函数,你可以用它来实现这一点。
对于compareTo,如果变量大于输入,则输出1,如果等于,则输出0,如果小于输入,则输出**-1**
因此您可以将其用于此任务,如下所示:

v.compareTo(false) // 0 or 1
moiiocjp

moiiocjp3#

在本例中,可以使用扩展属性扩展Boolean

val Boolean.int 
     get() = if (this) 1 else 0

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

dldeef67

dldeef674#

没有没有办法转换。你只能通过下面的代码转换

val output = if (input) 1 else 0
hof1towb

hof1towb5#

向一个API发出一个请求,该请求为一个应该明确为真/假的字段返回0或1。同时,我也向类似的API发出其他请求,该请求为相同类型的字段给予真/假。我想分享处理来自所有API的响应的代码。
在这种情况下,我认为使用转换器的Map库(Jackson等)将是最好的选择。
在普通的Kotlin中,你可以使用扩展函数/属性来实现这个目的。

4bbkushb

4bbkushb6#

使用以下命令:

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

txu3uszq7#

正确示例(隐含错误):

val boolValue = 1
val booleanResult = boolValue != 0  // true

相关问题