wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Kotlin使用UInt进行数组访问和常量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

无符号数据类型可能适合数组访问.通常索引都是无符号的.但目前我不能直接这样做.例如.这段代码. val foo = 1.toUInt() "foo"[foo] 无法编译: error: type mismatch: inferred type is UInt but Int was expected 处理这个问题的最佳方法是什么?当然,我能做到: val foo = 1.toUInt() "f
无符号数据类型可能适合数组访问.通常索引都是无符号的.但目前我不能直接这样做.例如.这段代码.

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,还需要单独的重载.)

大佬总结

以上是大佬教程为你收集整理的Kotlin使用UInt进行数组访问和常量全部内容,希望文章能够帮你解决Kotlin使用UInt进行数组访问和常量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。