首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在kotlin中,如何调用先前在时间中创建的变量?

在kotlin中,如何调用先前在时间中创建的变量?
EN

Stack Overflow用户
提问于 2022-03-01 16:08:42
回答 2查看 38关注 0票数 2

我在试着列出洗牌名单的前100名。如果列表是0,我告诉它洗牌,然后增加。然后,我尝试在时间的另一个部分调用这个列表,但它不起作用。我怎样才能做到这一点?

代码语言:javascript
运行
复制
    when (countF) {
                    0 -> {
                        //shuffle at 0
                        val randomChaos = chaosList.asSequence().shuffled().take(chaosList.count()).toList()
                        cResult.text = randomChaos.elementAt(countF) + countF + "\n\n\n\n\n\n\n\n" + this.cResult.text
                        countF++
                    }
                    1-99 -> {
                        //show 1-99
                        cResult.text = randomChaos.elementAt(countF) + countF + "\n\n\n\n\n\n\n\n" + this.cResult.text
                        countF++
                    }
                    100 -> countF = 0
EN

Stack Overflow用户

发布于 2022-03-01 17:50:35

您需要在val randomChaos封装之前创建when,以便在when语句的多个分支的范围内可用。

也就是说,你得到随机元素的方式是非常复杂的。take(chaosList.count())是完全多余的。而且,由于您不使用多个序列运算符,创建一个序列也是多余的。最后,您只是从随机列表中提取一个项目,因此没有必要首先创建一个杂乱列表。在混洗列表中使用elementAt()与从该混叠列表中选择任何元素并没有什么不同,或者只是从一个根本没有洗牌的列表中选择一个随机项。

另外,当前when语句的前两个分支将产生完全相同的结果,以便它们可以合并。

基于您所描述的,我猜您在一个循环中使用了这个when语句,该语句尝试运行100次,这样您就可以列出所有的条目。为此,您需要在循环之外对列表进行一次洗牌,然后可以在循环中迭代它的元素。

然而,有些功能可以使您建议的事情更容易完成。下面是一个例子:

代码语言:javascript
运行
复制
val randomChaos = chaosList.shuffled()
cResult.text = randomChaos.asSequence()
    .take(100)
    .withIndex()
    .joinToString("\n") { (i, value) ->
        "$value-$i"
    }

在这种情况下,使用序列有助于避免创建中间列表来保存前100个值。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71311394

复制
相关文章

相似问题

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