gpt4 book ai didi

以部分函数为值的 Scala 映射

转载 作者:行者123 更新时间:2023-12-05 00:00:39 26 4
gpt4 key购买 nike

Twitter's Scala school collections section ,它们显示了一个带有偏函数作为值的 Map:

// timesTwo() was defined earlier.
def timesTwo(i: Int): Int = i * 2
Map("timesTwo" -> timesTwo(_))

如果我尝试使用 Scala 2.9.1 和 sbt 编译它我得到以下信息:
[error] ... missing parameter type for expanded function ((x$1) => "timesTwo".$minus$greater(timesTwo(x$1)))
[error] Map("timesTwo" -> timesTwo(_))
[error] ^
[error] one error found

如果我添加参数类型:
Map("timesTwo" -> timesTwo(_: Int))

然后我收到以下编译器错误:
[error] ... type mismatch;
[error] found : Int => (java.lang.String, Int)
[error] required: (?, ?)
[error] Map("timesTwo" -> timesTwo(_: Int))
[error] ^
[error] one error found

我难住了。我错过了什么?

最佳答案

它认为你想这样做:

 Map((x: Int) => "timesTwo".->timesTwo(x))

当你想要这个时:
 Map("timesTwo" -> { (x: Int) => timesTwo(x) })

所以这有效:
 Map( ("timesTwo", timesTwo(_)) )
Map("timesTwo" -> { timesTwo(_) })

请注意,这不是一个常见的错误,请参阅
  • https://stackoverflow.com/a/7695459/257449 .
  • Scala underscore - ERROR: missing parameter type for expanded function

  • (可能还有更多)

    关于以部分函数为值的 Scala 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834053/

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