Kotlin是否支持Short类型数值字面量标记 有无类似3S的写法?
Kotlin 目前没有内置类似 3S 这样的 Short 类型字面量专属标记,整数默认字面量均为 Int 类型,且 Kotlin 不支持不同数值类型的隐式转换,所以才会出现 Int 和 Short 类型无法直接使用 == 比较的报错。
可用解决方案
- 显式调用
toShort()方法将 Int 字面量转为 Short 类型,修改代码如下即可正常运行:
另外如果是声明 Short 类型变量,只要显式指定变量类型为if(shortVal == 3.toShort())Short,编译器会自动对赋值的整数字面量做类型适配,不需要额外调用转换方法:val shortVal: Short = 3 // 编译器自动将字面量3适配为Short类型 - 如果需要频繁使用 Short 字面量,也可以通过自定义 Int 扩展属性实现你想要的
3S写法:// 全局定义扩展属性 val Int.S: Short get() = this.toShort() // 使用示例,和原生字面量用法一致 if(shortVal == 3S)
内容的提问来源于stack exchange,提问作者Damn Vegetables
相关产品推荐
相关产品推荐

