有人可以解释一下这段代码:
val ns: Iterator[Int] = (1 to 3).iterator
ns.map(_ => () => block)
其中
block: => Future[T]
基本上我只是对_
,=>
和单位()
语法的内容感到困惑。我试图读取它的方式是'我们映射一个函数,它返回一个不占用参数的函数,并在整数列表中返回一个Future [T]。它是否正确?当我连续看到多个=>
运算符时,我总是感到困惑。
答案 0 :(得分:2)
是的,你是对的。
它解析如下:
ns.map(_ => (() => block))
() => ?
语法只是定义无参数函数:
val f = () => 1
f() // 1
因此ns
中的整数被忽略,你只需要一个不带参数的函数迭代器并返回Futures:Iterator[() => Future[T]]
。
答案 1 :(得分:0)
我认为阻止:=>未来[T] 可能是该方法的签名。这意味着按名称呼叫。基本上,你可以理解它只是一个类型Future [T],它是懒惰评估但不是函数
val ns: Iterator[Int] = (1 to 3).iterator
ns.map(_ => () => block)
这将返回Iterator [()=>未来],是的,你是对的,这个变换为一个对Future没有任何作用的函数。这样做的好处是它不会立即评估Future,它会在你调用时被调用。
val result = ns.map(_ => () => block)
result.foreach(_())