Luc*_*cas 3 scala compiler-errors map
我有一个功能:
val ADD = (x: Double, y Double) => x+y
Run Code Online (Sandbox Code Playgroud)
我想将它放在一张地图中,以下似乎有效
val nameMap = Map(ADD -> "+")
Run Code Online (Sandbox Code Playgroud)
但这不是:
val diffMap = Map(
ADD -> (x: AlgObj,y: AlgObj, xdif: AlgObj, ydif: AlgObj) =>
new AlgObj(ADD, xdif, ydif))
Run Code Online (Sandbox Code Playgroud)
我尝试的各种其他事情也没有尝试过,总是带有这样的信息:"不是一个合法的形式参数",带有" - >"下的插入符号.有谁知道这个错误信息是什么意思?
当我粘贴在您的第一行代码中而没有更正其中的错误时,我收到了相同的错误消息:
scala> val ADD = (x: Double, y Double) => x+y
<console>:1: error: not a legal formal parameter
val ADD = (x: Double, y Double) => x+y
^
Run Code Online (Sandbox Code Playgroud)
我继续尝试这个:
scala> val ADD = (x: Double, y: Double) => x+y
ADD: (Double, Double) => Double = <function>
scala> val diffMap = Map(ADD -> (x: String, y: String) => x + y)
<console>:1: error: not a legal formal parameter
val diffMap = Map(ADD -> (x: String, y: String) => x + y)
^
Run Code Online (Sandbox Code Playgroud)
所以它看起来像这样的错误表示无效函数参数,解析器正试图组Map(ADD -> (x: String, y: String) => x + y)类似Map((ADD -> (x: String, y: String)) => x + y).
所以你需要在函数周围加上括号或括号:
scala> val diffMap = Map(ADD -> ((x: String, y: String) => x + y))
diffMap: scala.collection.immutable.Map[(Double, Double) => Double,(String, String) => java.lang.String] = Map(<function> -> <function>)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3830 次 |
| 最近记录: |