[ a vect : -6ren">
gpt4 book ai didi

kotlin - 预期的 Int,得到的是 IntProgression

转载 作者:行者123 更新时间:2023-12-01 09:50:28 30 4
gpt4 key购买 nike

我正在尝试使用 Kotlin,所以我正在关注 this tutorial他们自己的。

所以他们试图在给定字符串的情况下创建一个序列,例如:

"a vect" -> [
a vect :
a vec : t
a ve : ct
...
]

根据视频,这样做的方法如下:

val seq = sequenceOf(canonicalisedInput.lastIndex + 1 downTo 0).map {
canonicalisedInput.substring(0, it) to canonicalisedInput.substring(it)
}

我明白我所做的(好吧,它的想法)。问题是 substring 需要两个 Int,而 it(我假设它是来自 downTo progression) 是一个 IntProgression。与第二个 substring 调用相同。

我错过了什么?

最佳答案

您发布的代码包含错误: sequenceOf(...) 传递单个参数返回包含该项目的序列,即 Sequence<IntProgression> .要获得一系列索引 ( Sequence<Int> ),请使用 asSequence() 代替函数:

 (canonicalisedInput.lastIndex + 1 downTo 0).asSequence().map { ... }

substring(...)第二个函数是the overload that returns the substring starting from the index passed as the argument .

itimplicit name for the innermost lambda single parameter ,在您的情况下,它是 map 的参数,即lambda要映射的序列项。

因此,lambda 中的表达式是一对(由 to infix function 创建)两个子字符串,一个从原始字符串的开头到序列中的索引,另一个 - 从该索引到结尾字符串。

所以代码肯定应该与索引序列一起使用,这就是错误很明显的原因。

关于kotlin - 预期的 Int,得到的是 IntProgression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748773/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com