#scala #map #compiler-errors
#scala #словарь #ошибки компилятора
Вопрос:
У меня есть функция:
val ADD = (x: Double, y Double) => x y
и я хочу поместить это в map, кажется, работает следующее
val nameMap = Map(ADD -> " ")
но это не:
val diffMap = Map(
ADD -> (x: AlgObj,y: AlgObj, xdif: AlgObj, ydif: AlgObj) =>
new AlgObj(ADD, xdif, ydif))
как и различные другие вещи, которые я пробовал, всегда с сообщением: «недопустимый формальный параметр» с кареткой под ‘->’. Кто-нибудь знает, что означает это сообщение об ошибке?
Ответ №1:
Я получил то же сообщение об ошибке, когда вставил вашу первую строку кода, не исправив в ней ошибку:
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
^
Я продолжил пробовать это:
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)
^
Похоже, что эта ошибка указывает на недопустимый параметр функции, и анализатор пытается сгруппировать 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>)