加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Kotlin使用UInt进行数组访问和常量

发布时间:2020-12-14 01:35:51 所属栏目:Windows 来源:网络整理
导读:无符号数据类型可能适合数组访问.通常索引都是无符号的.但目前我不能直接这样做.例如.这段代码. val foo = 1.toUInt()"foo"[foo] 无法编译: error: type mismatch: inferred type is UInt but Int was expected 处理这个问题的最佳方法是什么?当然,我能做
无符号数据类型可能适合数组访问.通常索引都是无符号的.但目前我不能直接这样做.例如.这段代码.

val foo = 1.toUInt()

"foo"[foo]

无法编译:

error: type mismatch: inferred type is UInt but Int was expected

处理这个问题的最佳方法是什么?当然,我能做到:

val foo = 1.toUInt()

"foo"[foo.toInt()]

但这在某种程度上是错误的.无论如何,UInt是一个内联类,无论如何都会被删除到Int – 所以我认为不应该这样做.有人看过kotlin / KEEP吗?
还想知道如何定义无符号常量.不幸的是,构造函数是私有的,所以我不能做到,例如

const val foo = UInt(42)

const val foo = 42.toUInt()

42.toUI()失败并不是常量值

解决方法

除非/直到内置对此的支持,否则您可以轻松地自行添加.例如,对于标准数组:

operator fun <T> Array<T>.get(index: UInt) = this[index.toInt()]

而对于CharSequences(不是数组):

operator fun CharSequence.get(index: UInt) = this[index.toInt()]

有了这个范围,你的“foo”[foo]工作正常!

(如果您使用IntArray& c,还需要单独的重载.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读