小编pin*_*ons的帖子

为什么在嵌套迭代器上展平无法编译,为什么我需要类型归属?

(new Iterator[List[Int]] {
  def hasNext: Boolean = ???
  def next(): List[Int] = ???
}).flatten
Run Code Online (Sandbox Code Playgroud)

给出错误:

value flatten is not a member of Iterator[List[Int]]
[error] possible cause: maybe a semicolon is missing before `value flatten'?
[error]     }.flatten
[error]       ^
[error] one error found
Run Code Online (Sandbox Code Playgroud)

(new Iterator[List[Int]] {
  def hasNext: Boolean = ???
  def next(): List[Int] = ???
}: Iterator[List[Int]]).flatten
Run Code Online (Sandbox Code Playgroud)

作品。还将迭代器存储在 val 中。

斯卡拉版本:2.11.8

scala type-inference ascription

5
推荐指数
1
解决办法
114
查看次数

Scala:求和类型的函数映射

给出以下代码

sealed trait Fruit

case class Apple(color: String) extends Fruit
case class Orange(color: String) extends Fruit

def getAppleColor(apple: Apple) = apple.color
def getOrangeColor(orange: Orange) = orange.color

val myMap: Map[String, Fruit] = Map(
"myApple" -> Apple("red"),
"myOrange" -> Orange("orange"),
)

val myMapOfFunctions: Map[String, Apple with Orange => String]  = Map(
"myAppleColorFun" -> getAppleColor,
"myOrangeColorFun" -> getOrangeColor,
)
Run Code Online (Sandbox Code Playgroud)

为什么myMapOfFunctions不是 aMap[String, Fruit => String]类似于myMap?我想是因为它与功能有关,但我想更好地理解原因。谢谢!

generics types scala contravariance

1
推荐指数
1
解决办法
68
查看次数