Int) = (x:Int) => { scala.util.Random.n-6ren">
gpt4 book ai didi

scala - "unbound placeholder parameter"的解释

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

问题

为什么情况 2 会导致“未绑定(bind)占位符参数”,而情况 1 却可以?

案例1

val h: (Int => Int) = (x:Int) => { scala.util.Random.nextInt(x) }
val _h: (Int => Int) = { scala.util.Random.nextInt(_) }
h(5) // 3
_h(5) // 3

案例2

val f: (Int => Int) = (x:Int) => { x }
f(5) // 5
// Causes error
val _f: (Int => Int) = { _ } <----- unbound placeholder parameter

最佳答案

_永远不会被解释为 x => x在 Scala 中。

如果我理解language spec的部分它正确谈论“绑定(bind)下划线部分”,这正是因为 Scala 保留 _对于部分应用。就像 scala.util.Random.nextInt(_) 的情况一样这意味着x => nextInt(x)而不是nextInt(x => x) .

关于scala - "unbound placeholder parameter"的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59155495/

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