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)