假设我有以下代码:
object ForComprehension {
def generateSomeSeq(n: Int): List[Int] = (1 to n).toList
def square(n: Int): List[Int] =
for (x <- generateSomeSeq(n)) yield x * x
}
一切正常。但是由于某种原因,我将第一种方法的结果修改Set
为List
:
object ForComprehension {
def generateSomeSeq(n: Int): Set[Int] = (1 to n).toSet
def square(n: Int): List[Int] =
for (x <- generateSomeSeq(n)) yield x * x
}
scala 编译器抱怨在第一个生成器中存在类型不匹配的理解。尽管它是有道理的,但我仍然希望它在这两种情况下都有效。毕竟,没有视觉线索可以理解它期望 aList
而不是 a Set
。我需要阅读两个签名来诊断类型不匹配错误。
或者我不应该期望这样的句法局部性首先用于理解,不是吗?