Iterator[A] 类型的表达式不符合预期的 Iterator[A] 类型
Expression of type Iterator[A] doesn't conform to expected type Iterator[A]
我是 scala 的初学者,我有一个实现树的非常简单的代码。我想让它成为 Iterable,这样我就可以使用迭代器遍历这棵树中的每个元素。不幸的是,IntelliJ 显示错误。
Expression of type Iterator[A] doesn't conform to expected type Iterator[A]
指Nodeclass中的iterator方法。
在我的代码下面:
abstract class MyTreeItem[A] extends Iterable
case class EmptyLeaf[A]() extends MyTreeItem[A] {
override def iterator: Iterator[A] = Iterator.empty
}
case class Node[A](left: MyTreeItem[A], right: MyTreeItem[A], item: A) extends MyTreeItem[A] {
*override def iterator: Iterator[A] = Iterator.single(item) ++ left.iterator ++ right.iterator*
}
这里有什么问题?
你需要的是在实现时添加泛型参数 Iterable
:
abstract class MyTreeItem[A] extends Iterable[A]
没有它,MyTreeItem[A]
是 Iterable[Any]
类型,最后一行的串联迭代器也推断出类型 Iterable[Any]
,当然,这不能分配给 Iterable[A]
.
我是 scala 的初学者,我有一个实现树的非常简单的代码。我想让它成为 Iterable,这样我就可以使用迭代器遍历这棵树中的每个元素。不幸的是,IntelliJ 显示错误。
Expression of type Iterator[A] doesn't conform to expected type Iterator[A]
指Nodeclass中的iterator方法。 在我的代码下面:
abstract class MyTreeItem[A] extends Iterable
case class EmptyLeaf[A]() extends MyTreeItem[A] {
override def iterator: Iterator[A] = Iterator.empty
}
case class Node[A](left: MyTreeItem[A], right: MyTreeItem[A], item: A) extends MyTreeItem[A] {
*override def iterator: Iterator[A] = Iterator.single(item) ++ left.iterator ++ right.iterator*
}
这里有什么问题?
你需要的是在实现时添加泛型参数 Iterable
:
abstract class MyTreeItem[A] extends Iterable[A]
没有它,MyTreeItem[A]
是 Iterable[Any]
类型,最后一行的串联迭代器也推断出类型 Iterable[Any]
,当然,这不能分配给 Iterable[A]
.