Scala 使用长字符串作为右值定义映射[Int,String]
我试图使用字符串literal的串联 作为Scala 使用长字符串作为右值定义映射[Int,String],scala,Scala,我试图使用字符串literal的串联 作为映射[Int,String]定义中的值: scala> val m: Map[Int, String] = Map(1 -> "a" + "b") 但是我从sbt控制台得到以下错误 <console>:7: error: type mismatch; found : String required: (Int, String) val m: Map[Int, String] = Map(1 -> "a
映射[Int,String]
定义中的值:
scala> val m: Map[Int, String] = Map(1 -> "a" + "b")
但是我从sbt控制台得到以下错误
<console>:7: error: type mismatch;
found : String
required: (Int, String)
val m: Map[Int, String] = Map(1 -> "a" + "b")
无需为每个代码段定义一个字符串作为映射权限值
有没有办法做到这一点?您只是缺少一些括号:
scala> val m: Map[Int, String] = Map(1 -> ("a" + "b"))
m: Map[Int,String] = Map(1 -> ab)
之所以会出现此错误,是因为->
优先于+
,这意味着您实际上会得到(1->“a”)+b
,如下所示:
scala> 1 -> "a" + "b"
res4: String = (1,a)b
您只是缺少一些括号:
scala> val m: Map[Int, String] = Map(1 -> ("a" + "b"))
m: Map[Int,String] = Map(1 -> ab)
之所以会出现此错误,是因为->
优先于+
,这意味着您实际上会得到(1->“a”)+b
,如下所示:
scala> 1 -> "a" + "b"
res4: String = (1,a)b
“可能”?肯定!啊,是的,现在我想起来了,这个错误很有道理,“可能”?肯定!啊,是的,现在我想起来了,这个错误让人感觉很好,很多人认为SQL字符串构造是很差的形式。如果你想把一个ID映射到一个函数,你可以这样做:函数是Scala中的值,所以你可以把它们存储在你的地图中,就像一个旁白一样,很多人认为SQL字符串构造是很差的形式。如果您想将一个id映射到一个函数,您可以这样做:函数是Scala中的值,所以您可以将它们存储在map-like中