首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用长变量处理Kotlin数组

用长变量处理Kotlin数组
EN

Stack Overflow用户
提问于 2018-10-10 13:35:31
回答 2查看 838关注 0票数 2

我有个关于Kotlin的问题。我尝试了两个版本的Kotlin,1.0.0和1.2.6。使用Kotlin,我们可以初始化一个数组并访问它的元素,如下所示。

代码语言:javascript
运行
复制
val n: Int = 10
val arr = Array(n, { it } )
val i: Int = 0
println(arr[i])

但是,这段代码出现了错误。

代码语言:javascript
运行
复制
val n: Long = 10
val arr = Array(n, { it } )
val i: Long = 0
println(arr[i])

为了编译这段代码,它似乎是将Long强制转换到Int的唯一方法。

代码语言:javascript
运行
复制
val n: Long = 10
val arr = Array(n.toInt(), { it } )
val i: Long = 0
println(arr[i.toInt()])

然而,这似乎是多余的,但我找不到任何解决办法。所以我的问题是

  1. 有什么方法可以用长变量初始化数组和访问元素吗?
  2. Kotlin有什么理由不能在这里接受长变量吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-10 13:40:00

Kotlin附带了longArrayOf(1, 2, 3),它将为您创建一个包含Long的数组。

请注意,您试图使用println(arr[i])的是从arr中获取一个Long值,但是数组的索引是用Int完成的。

代码语言:javascript
运行
复制
/** 
 * Returns the array element at the given [index]. 
 * This method can be called using the index operator.
 */
public operator fun get(index: Int): Long
票数 5
EN

Stack Overflow用户

发布于 2018-10-13 01:15:54

如果要初始化给定长度的多头数组,可以使用相同的顶级Array函数:

代码语言:javascript
运行
复制
val n = 10 // n is Int
val arrayOfLongs = Array(n) { it.toLong() } // Array of 10 longs

这里的数字nInt,初始化器函数将被初始化的元素的整数索引it转换为Long,因此我们得到了一个longs数组。

或者您可以使用另一个类似的函数来创建一个专门的LongArray

代码语言:javascript
运行
复制
val longArray = LongArray(n) { it.toLong() } // LongArray of 10 longs

这两个数组都存储longs,但后者的存储比较紧凑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52741496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档