在Kotlin中,从1.5版开始,DoubleLong类型的直接转换为Char已标记为deprecated,建议调用以下toInt().toChar()函数链将Double/Long转换为Char.

有什么prompted的Kotlin开发人员放弃了将DoubleLong类型的直接转换为Char

这种做法可以解决哪些问题?

fun main() {
    val l = 100_000_000_000 // random big number
    val d = 1.2543534645645362E15 // random big double

    var chUsedDirectToChar = l.toChar()
    var chUsedToIntToChar = l.toInt().toChar() // the same
    println(chUsedDirectToChar == chUsedToIntToChar) // true

    chUsedDirectToChar = d.toChar()
    chUsedToIntToChar = d.toInt().toChar() // the same
    println(chUsedDirectToChar == chUsedToIntToChar) // true
}

推荐答案

你可以在这本书中找到动力:https://github.com/Kotlin/KEEP/blob/master/proposals/stdlib/char-int-conversions.md

Double.toChar()这样的反向转换通常没有意义,如果通过首先将数字转换为Int,然后获取与该Int代码对应的字符来明确表达意图,则会更清楚.

很难理解您想要的数字(如16.284619)的字符是什么,所以现在必须显式地将其转换为Int,然后再转换为Char

Kotlin相关问答推荐

在Kotlin中,有没有一种函数方法将一个列表(N个元素)映射到一个相邻元素之和列表(N—1个元素)?

Kotlin多平台(KMP)保存到文件不能在iOS上保存

Kotlin 可空泛型

如果不在可组合函数中,如何获取 stringResource

我可以在 Kotlin 中使用接口类型作为构造函数参数吗

通过顺序多米诺骨牌操作列表管理对象的最佳方法是什么?

即使 Kotlin 的 `Map` 不是 `Iterable`,它如何以及为什么是可迭代的?

如何在 Kotlin 中使用具有继承的泛型

为空数组添加值

Android数据绑定在自定义视图中注入ViewModel

致命错误 LifecycleOwners 必须在 registerForActivityResult 开始之前调用 register

使用 Kotlin 创建新目录,Mkdir() 不起作用

runOnUiThread 没有调用

添加抽象的私有getter和公共setter的正确方法是什么?

使用导航组件在不同的图形之间导航

Kotlin协程无法处理异常

如何在 Kotlin 中定义新的运算符?

如何在 kotlin 中创建重复对象数组?

可见性不适用于 Kotlin

RxJava2 UndeliverableException 在获取数据时发生方向变化