scala - “未绑定占位符参数”的解释
问题描述
问题
为什么案例 2 会导致“未绑定的占位符参数”,而案例 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 中那样被解释。
如果我正确理解了语言规范中关于“绑定下划线部分”的部分,这正是因为 Scala 保留_
了部分应用程序。就像在它的情况下scala.util.Random.nextInt(_)
意味着x => nextInt(x)
而不是nextInt(x => x)
。
推荐阅读
- python - 使用 Selenium 和 Beautifulsoup 进行 Python 抓取,仅提取超链接 href 无链接
- c++ - C++中队列的实现
- docker - Xdebug 不适用于 VSCode 编辑器的 Docker 设置
- reactjs - 无法在 React Native 中渲染 HTML
- reactjs - React 和 React Native 的区别
- python - MeSH(医学主题标题)数据集(mesh.nt)在 RDFLib Python 中不起作用
- javascript - 在 IE 11 中单击时无法显示多个工具提示
- flutter - Flutter:iOS 通知后台处理程序
- c++ - 使用堆栈和中序遍历检查 Tree 是否为 BST
- ios - 如何在swift 5中为表格视图单元格添加滑动操作