Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中,在toMap之后添加不相关的行时,编译错误消失了_Scala - Fatal编程技术网

在scala中,在toMap之后添加不相关的行时,编译错误消失了

在scala中,在toMap之后添加不相关的行时,编译错误消失了,scala,Scala,这是从coursera函数式编程课程交叉发布的,因为该论坛上的活动要少得多 我编写了以下代码(由于是家庭作业,所以对部分进行了编辑): 这会产生以下编译错误: type mismatch; found : Map[Char,Int] required: <:<[(Char, Int), (?, ?)] 我猜这与给类型检查器一些额外的提示有关,但是有人知道为什么会发生这种情况吗?@RexKerr&@didiierdupont是对的,您遇到了问题,因为您像调用二进制运算符一样调用了to

这是从coursera函数式编程课程交叉发布的,因为该论坛上的活动要少得多

我编写了以下代码(由于是家庭作业,所以对部分进行了编辑):

这会产生以下编译错误:

type mismatch; found : Map[Char,Int] required: <:<[(Char, Int), (?, ?)]

我猜这与给类型检查器一些额外的提示有关,但是有人知道为什么会发生这种情况吗?

@RexKerr&@didiierdupont是对的,您遇到了问题,因为您像调用二进制运算符一样调用了
toMap
,所以编译器崩溃了


我的两分钱:你可能应该阅读下面的。

下面是一些例子,并解释了为什么会发生这种情况

首先,工作和非工作情况:

scala> { List('a -> 1, 'b -> 2).toMap
     | println("aaa") }
aaa

scala> { List('a -> 1, 'b -> 2) toMap
     | println("aaa") }
<console>:9: error: type mismatch;
 found   : Unit
 required: <:<[(Symbol, Int),(?, ?)]
              println("aaa") }
                     ^
它与
列表('a->1,'b->2)相同。映射(标识)


现在来看奇怪的错误消息
found:Unit,required:Why a downvote with no comment?它认为
y.foldLeft
toMap
的一个参数(替换指定类型的普通隐式)。在
toMap
后面加一个分号,你就没事了。或者只加一个点:x.toMapI既不懂赞成票,也不懂反对票。我认为这个问题很有趣,也很适合。它很好地说明了后缀运算符的分号推理问题。我同意它过于本地化,但我也相信它可以改进。它太本地化了,因为@jonderry没有尝试从这段代码中提取最小的工作样本。
type Occurrences = List[(Char, Int)]
def subtract(x: Occurrences, y: Occurrences): Occurrences = {
  val mx: Map[Char, Int] = x toMap
  val foo: Map[Char, Int] = y.foldLeft (redacted) (redacted => simple expression using updated and -))
  y.foldLeft (redacted) (redacted => simple expression using updated and -)) toList
}
scala> { List('a -> 1, 'b -> 2).toMap
     | println("aaa") }
aaa

scala> { List('a -> 1, 'b -> 2) toMap
     | println("aaa") }
<console>:9: error: type mismatch;
 found   : Unit
 required: <:<[(Symbol, Int),(?, ?)]
              println("aaa") }
                     ^
scala> { val x = List('a -> 1, 'b -> 2) map 
     | identity
     | 
     | println(x) }
List(('a,1), ('b,2))
scala> { List('a -> 1, 'b -> 2) toMap
     | 
     | println("aaa") }
aaa