在Kotlin中是否没有内置的方式来进行boolean - int之间的转换?我说的是通常的方式:
true -> 1 false -> 0
如果不是,那么什么是一个惯用的方法来做到这一点?
1cklez4t1#
你可以写一个布尔的扩展函数
fun Boolean.toInt() = if (this) 1 else 0
u0njafvf2#
为每个项目的这个任务编写一个函数可能会有点乏味。有一个Kotlin函数,你可以用它来实现这一点。对于compareTo,如果变量大于输入,则输出1,如果等于,则输出0,如果小于输入,则输出**-1**因此您可以将其用于此任务,如下所示:
compareTo
v.compareTo(false) // 0 or 1
moiiocjp3#
在本例中,可以使用扩展属性扩展Boolean:
Boolean
val Boolean.int get() = if (this) 1 else 0
现在,您只需在代码中执行true.int即可
true.int
dldeef674#
没有没有办法转换。你只能通过下面的代码转换
val output = if (input) 1 else 0
hof1towb5#
向一个API发出一个请求,该请求为一个应该明确为真/假的字段返回0或1。同时,我也向类似的API发出其他请求,该请求为相同类型的字段给予真/假。我想分享处理来自所有API的响应的代码。在这种情况下,我认为使用转换器的Map库(Jackson等)将是最好的选择。在普通的Kotlin中,你可以使用扩展函数/属性来实现这个目的。
4bbkushb6#
使用以下命令:
val Boolean?.int get() = if (this != null && this) 1 else 0
txu3uszq7#
正确示例(隐含错误):
val boolValue = 1 val booleanResult = boolValue != 0 // true
7条答案
按热度按时间1cklez4t1#
你可以写一个布尔的扩展函数
u0njafvf2#
为每个项目的这个任务编写一个函数可能会有点乏味。有一个Kotlin函数,你可以用它来实现这一点。
对于
compareTo
,如果变量大于输入,则输出1,如果等于,则输出0,如果小于输入,则输出**-1**因此您可以将其用于此任务,如下所示:
moiiocjp3#
在本例中,可以使用扩展属性扩展
Boolean
:现在,您只需在代码中执行
true.int
即可dldeef674#
没有没有办法转换。你只能通过下面的代码转换
hof1towb5#
向一个API发出一个请求,该请求为一个应该明确为真/假的字段返回0或1。同时,我也向类似的API发出其他请求,该请求为相同类型的字段给予真/假。我想分享处理来自所有API的响应的代码。
在这种情况下,我认为使用转换器的Map库(Jackson等)将是最好的选择。
在普通的Kotlin中,你可以使用扩展函数/属性来实现这个目的。
4bbkushb6#
使用以下命令:
txu3uszq7#
正确示例(隐含错误):