Scala map以部分函数作为值
发布时间:2020-12-16 18:03:24 所属栏目:安全 来源:网络整理
导读:在 Twitter’s Scala school collections section中,它们显示带有部分函数的Map作为值: // timesTwo() was defined earlier.def timesTwo(i: Int): Int = i * 2Map("timesTwo" - timesTwo(_)) 如果我尝试用Scala 2.9.1和sbt编译它,我得到以下内容: [error]
在
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. (可能更多) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- angular – 如何从实现ControlValueAccessor的组件引用Form
- Scala – 从List中获取带有扭曲的唯一值
- angularjs – Angular2获取当前路由的别名
- unix – uptime命令结果意味着什么
- 【BootStrap】<meta http-equiv="X-UA-Compatible&
- jax-ws之webservice security(安全)教程第二天
- 需要在AngularJS输入表单中选择使用的示例
- angularjs – Angular.js使用参数删除资源
- scala – 找不到类型为^的证据参数的隐含值
- vimrc文件配置的全文收录(史上最全,附带中文解释)