相关疑难解决方法(0)

Scala"< - "用于理解

我发现Scala总是对任何东西都有"自然的解释".总是像"哦,但这只是一个函数被调用此函数和该对象与此参数".从某种意义上说,我们从其他语言中知道它并不是真正的编译器魔法.

我的问题是在以下代码中使用的< -运算符:

for(i <- 0 to 10) println(i)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我可以看到它被重写为:

0.to(10).foreach((i:Int)=>println(i))
Run Code Online (Sandbox Code Playgroud)

但这并没有解释如何进入foreach函数内的匿名函数.在你写i的时候,它不是一个对象,也不是一个声明的变量.那是什么呢,它是如何被带到foreach的内部的呢?

我的猜测是,我终于发现了一些实际上是编译魔术的东西

谢谢你的时间.

为了澄清,我的问题是:如何做的< -在代码的第一线操作人员的工作,因为我不上它可作为函数调用的对象.

loops scala compiler-theory for-comprehension

23
推荐指数
3
解决办法
2万
查看次数

Scala Future用过滤器来理解

在下面的示例中,我得到了例外 java.util.NoSuchElementException: Future.filter predicate is not satisfied

我想Future( Test2 )在检查if( i == 2 )失败时获得结果.我如何处理过滤器/如果处理组成期货的理解?

下面是一个在Scala REPL中工作的简化示例.

码:

import scala.concurrent.Future
import scala.util.{ Try, Success, Failure }
import scala.concurrent.ExecutionContext.Implicits.global

val f1 = Future( 1 )
val f2 = for {
  i <- f1
  if( i == 2 )
} yield "Test1"
f2.recover{ case _ => "Test2" }
f2.value
Run Code Online (Sandbox Code Playgroud)

scala future filter for-comprehension

23
推荐指数
3
解决办法
2万
查看次数