【发布时间】:2019-05-22 16:34:05
【问题描述】:
2 个不同的示例,第一个有效:
import cats.syntax.either._
val e = 10.asRight[String]
def i2s(i:Int):String = i.toString
e.map(i => List(i2s(i))) //using explicit parameter
e.map(List(i2s(_))) //using no-name _ parameter
现在与 Option 相同的示例未编译:
e.map(Option(i2s(_)))
错误:
Error:(27, 15) type mismatch;
found : Option[Int => String]
required: Int => ?
e.map(Option(i2s(_)))
使用显式参数它可以正常工作:
e.map(i => Option(i2s(i)))
在这两种情况下,apply 方法都是通过 List 和 Option 调用的。 List.apply签名:
def apply[A](xs: A*): List[A] = ???
Option.apply签名:
def apply[A](x: A): Option[A]
请解释一下区别。
【问题讨论】:
标签: scala function scala-cats