Kotlin 短文字前置/后缀?

Dam*_*les 9 kotlin

下面的代码抛出一个错误,==不能在int和short之间应用。

if(shortVal == 3)
Run Code Online (Sandbox Code Playgroud)

Kotlin 是否有办法表示数字文字是一个短字符,例如3S

End*_*eit 6

据我所知,标准库中没有类似的功能。但您仍然可以自行实现类似的功能,例如使用 Kotlin 的扩展属性。

val Int.s: Short
    get() = toShort()

val i: Int = 3
val s: Short = 3.s
Run Code Online (Sandbox Code Playgroud)

  • 更重要的是,Kotlin(以及 Rust、Swift、Go)试图避免为*程序员*制定复杂的规则。无声的缩小范围强制会丢弃数据;如此多的团队通过 linter 禁止它,以至于语言设计者认为它是一个反功能。C#、Java 或 C++ 在泛型之前就已经有了强制转换,因此它们都存在令人讨厌的极端情况。Kotlin 可以借鉴现代 C++ 的经验:为文字数字赋予它们自己的假类型,并将其向下转换为 int/short/long/等等。 (2认同)