scala 嵌套 for/yield 生成器来提取子字符串
scala nested for/yield generator to extract substring
我是 Scala 新手。请温柔点。我现在的问题是语法错误。
(但我的最终目标是打印列表中每个字符串的每组 3 个字符......现在我只打印每个字符串的前 3 个字符)
def do_stuff():Unit = {
val s = List[String]("abc", "fds", "654444654")
for {
i <- s.indices
r <- 0 to s(i).length by 3
println(s(i).substring(0,3))
} yield {s(i)}
}
do_stuff()
我收到这个错误。它是语法相关的,但我不理解..
Error:(12, 18) ')' expected but '.' found.
println(s(i).substring(0,3))
该代码无法编译,因为在 for-comprehension 中,你不能只放一个打印语句,你总是需要一个赋值,在这种情况下,一个虚拟的可以解决你的问题。
_ = println(s(i).substring(0,3))
编辑
如果你想在每个字符串中组合 3 个元素,你可以使用集合中的组合方法。
List("abc", "fds", "654444654").flatMap(_.combinations(3).toList)
我是 Scala 新手。请温柔点。我现在的问题是语法错误。 (但我的最终目标是打印列表中每个字符串的每组 3 个字符......现在我只打印每个字符串的前 3 个字符)
def do_stuff():Unit = {
val s = List[String]("abc", "fds", "654444654")
for {
i <- s.indices
r <- 0 to s(i).length by 3
println(s(i).substring(0,3))
} yield {s(i)}
}
do_stuff()
我收到这个错误。它是语法相关的,但我不理解..
Error:(12, 18) ')' expected but '.' found. println(s(i).substring(0,3))
该代码无法编译,因为在 for-comprehension 中,你不能只放一个打印语句,你总是需要一个赋值,在这种情况下,一个虚拟的可以解决你的问题。
_ = println(s(i).substring(0,3))
编辑
如果你想在每个字符串中组合 3 个元素,你可以使用集合中的组合方法。
List("abc", "fds", "654444654").flatMap(_.combinations(3).toList)