gpt4 book ai didi

scala - Scala 中的匿名函数和映射

转载 作者:行者123 更新时间:2023-12-04 19:55:07 25 4
gpt4 key购买 nike

我不确定为什么这不起作用:

scala> case class Loader(n: String, x: String, l: List[String])
scala> val m: Map[String, (List[String])=>Loader] =
| Map("x" -> Loader("x", "x1", _:List[String]))

<console>:8: error: type mismatch;
found : (List[String]) => (java.lang.String, Loader)
required: (String, (List[String]) => Loader)
Map("x" -> Loader("x", "x1", _:List[String]))

但是这样可以吗?

scala> Loader("t", "x", _:List[String])
res7: (List[String]) => Loader = function1>

scala> val m = Map("x" -> res7)
m: scala.collection.immutable.Map[java.lang.String,(List[String]) => Loader] =
Map((String,function1>))

最佳答案

又一个 Scala 中 _ 重载的受害者。考虑一下:

f(_, 5) + 1 // Partial function application
f(_ + 1, 5) // Closure

在第一种情况下,_ 替换了整个参数。在这种情况下,它代表 f 的部分应用。在实践中,它等同于 x => f(x, 5) + 1,因为 contains f 的整个表达式变成了关闭。

在第二种情况下,_ 是表达式的一部分。在这种情况下,整个表达式变成了闭包,直到任何表达式定界符——我的意思是如果表达式嵌套在另一个表达式中,只有内部表达式变成闭包。在实践中,它等同于 f(x => x + 1, 5)

关于scala - Scala 中的匿名函数和映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505125/

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