scala - Defining a Map[Int, String] with long strings as right value -


i'm trying use concatenation of string litterals value in map[int, string] definition:

scala> val m: map[int, string] = map(1 -> "a" + "b") 

but following error sbt console

<console>:7: error: type mismatch;  found   : string  required: (int, string)        val m: map[int, string] = map(1 -> "a" + "b") 

the reason want such thing because want define maps id code so:

map(1 -> s"""select year, count(*) from""" +           s"""  (select id, year(pb_date) year  publications) res1""" +          s"""group year;""") 

without having define string each of code snippets present map right value.

is there way achieve this?

you missing parentheses:

scala> val m: map[int, string] = map(1 -> ("a" + "b")) m: map[int,string] = map(1 -> ab) 

the reason why getting error because -> takes precedence on +, meaning (1 -> "a") + b, can see below:

scala> 1 -> "a" + "b" res4: string = (1,a)b