gpt4 book ai didi

Scala-zip 与 future

转载 作者:行者123 更新时间:2023-12-04 17:51:46 26 4
gpt4 key购买 nike

下面是我试图理解的代码:

object Tryouts extends App{
val studentIds= Future{
List("s1","s2","s3")
}
val details = studentIds zip(Future{List("Tim","Joe","Fin")}).map(x=>x.tail)
details.foreach(println)
Thread.sleep(1000)

}
问题:

val details = studentIdszip(Future{List("Tim","Joe","Fin")}).map(x=>x.tail)


在这里,如果您注意到,我没有使用“。”在压缩之前,只是给一个空间。我猜可能是 。和空间都以相同的方式工作,并且还验证了一些堆栈溢出问题。应用 map 之前的上述表达式将导致我一个 Future[(List[String],List[String])]。所以当我说

.map(x=x.tail) should show compilation error in IDE because tail operation can be applied only on list and not for tuple. But it is actually executing successfully.

The same statement when executed with "." before zip function like this:

val details = studentIds.zip(Future{List("Tim","Joe","Fin")}).map(x=>x.tail) the map(x=>x.tail) gives error.


可能是什么原因?

最佳答案

当您省略空格(通过替换 . )时,您还必须省略括号,否则编译器会将后面的内容视为初始表达式的一部分 - 在您的情况下为 map(x => x.tail)将应用于Future{List("Tim", "Joe", "Fin")} .

一个简单的例子可以在这里观察到:

val y = 3 to(5).toDouble
#toDouble实际上应用于数字 5。如果您尝试使用范围定义的方法,它将不起作用。

回到你的代码,如果你删除 .在尾调用之前,您将收到预期的编译错误:

val details = ids zip Future.successful(List("Tim", "Joe", "Fin")) map (_.tail)
// compile error: "Cannot resolve symbol tail"

关于Scala-zip 与 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com