16得票4回答
当对其中一项进行检查返回 false 时,如何结束 for-comprehension 循环

我对Scala还比较陌生,如果这个问题有些琐碎,请见谅。 我有一个想要迭代的项目列表。我想对每个项目执行检查,如果其中任何一个失败,我希望整个函数返回false。因此您可以将其视为AND条件。我希望它被懒洋洋地评估,即我遇到第一个false时就立即返回false。 我习惯于使用for-yi...

16得票3回答
使用Scala中的for-comprehension、Try和sequences

假设你有一堆方法:def foo() : Try[Seq[String]] def bar(s:String) : Try[String] 然后你想要创建一个for推导式:for { list <- foo item <- list result <- bar(i...

15得票2回答
Scala的for循环推导式何时是惰性的?

在Python中,我可以像这样做:lazy = ((i,j) for i in range(0,10000) for j in range(0,10000)) sum((1 for i in lazy)) 这需要一段时间,但内存使用是恒定的。 在 Scala 中相同的结构:(for(i&lt...

14得票3回答
为了理解和函数创建的数量

最近我参加了Scala开发者职位的面试,被问到以下问题:// matrix 100x100 (content unimportant) val matrix = Seq.tabulate(100, 100) { case (x, y) => x + y } // A for { ...

14得票4回答
Scala中的for-comprehension与元组分解

for { a <- Some(1) b <- Some(2) } yield (a, b) 返回 Some((1, 2)) for { a <- Right(1).right b <- Left(2).left } yield (a, b) ...

13得票1回答
为什么Scala在涉及Either和值定义的'for'表达式中选择类型'Product'

如果我使用Option创建一个带有值定义的for循环,它会按预期工作:scala> for (a <- Some(4); b <- Some(5); val p = a * b) yield p res0: Option[Int] = Some(20) 如果我没有值的定义,使...

12得票2回答
Scala中for/yield的返回类型

我正在阅读Scala快速入门,发现了一些让我感到困惑的内容。 以下代码返回一个字符串:scala> for ( c<-"Hello"; i <- 0 to 1) yield (c+i).toChar res68: String = HIeflmlmop 但这会返回一个向量(...

11得票1回答
猫 - 当有“Monad”实例时如何使用for-comprehension?

如何在下面的方法中使用for-comprehension来处理类型M?def foo[M[_]: Monad](m1: M[Int], m2: M[Int]) = for { a <- m1 b <- m2 } yield (a + b) 我会得到一个 ...

10得票2回答
Scala中for-comprehension的性能表现

我有一个关于 Scala 中 for-comprehensions 效率的问题。 当 perm 列表中大约有 550 个元素时,以下代码运行时间约为 45 秒。perm = some list for{ perm <- perms.withFilter(_.size > 0...

9得票3回答
使用Scala的for推导式处理Future和Option

object Main extends App { val p1 = Promise[Option[String]]() val p2 = Promise[Option[String]]() val f1 = p1.future val f2 = p2.future va...