小编Ole*_*Ych的帖子

Scala for-comprehension类型推断

下一个代码

  def f(chars: List[Char]): List[List[Char]] = chars match {
    case Nil => List(Nil)
    case x :: xs => for {
      v <- f(xs)
    } yield List(x) :: v
  }
Run Code Online (Sandbox Code Playgroud)

给出错误消息

- type mismatch;  found   : List[List[Any]]  required: List[List[Char]]
Run Code Online (Sandbox Code Playgroud)

请帮助我理解为什么'for'选择最一般的Any而不是Char?我应该阅读语言规范中的哪个主题?谢谢.

scala for-comprehension

5
推荐指数
2
解决办法
298
查看次数

为什么javaBigDecimal2bigDecimal隐含不适用?

使用scala 2.9.2此代码:

BigDecimal(1) + new java.math.BigDecimal("1")
new java.math.BigDecimal("1") + BigDecimal(1)

不编译,因为scala.math.BigDecimal $#javaBigDecimal2bigDecimal未应用于第二种情况

但是,如果我在它之前定义相同的隐式权限,代码将编译:

BigDecimal(1) + new java.math.BigDecimal("1")
implicit def javaBigDecimal2bigDecimal(x: java.math.BigDecimal): BigDecimal = BigDecimal(x)
new java.math.BigDecimal("1") + BigDecimal(1)

为什么这样?

scala implicit-conversion

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