我有这个隐式def来将Option [Int]转换为Option [String]
implicit def optIntOptString(n: Option[Int]): Option[String] = Some(n.get.toString)
虽然这个有效:
val optIntVal: Option[Int] = Some(3)
val converted: Option[String] = optIntVal // the 'optIntVal' which is of type Option[Int] gets converted implicitly to Option[String] due to the implicit def 'optIntOptString'
这不是:
val failConv: Option[String] = Some(3)
found : Int(3)
required: String
val failConv: Option[String] = Some(3)
我试图在不使用中间值的情况下进行转换
我的目的是在map / flatmap函数中使用隐式转换,例如:
val someList: List[Int] = List(1, 2, 3)
someList.map((num:Int) => {
val z:Option[String] = Some(num)
z
})
但即使使用保存源类型的中间值我也会收到错误,看起来隐式转换在map方法中不起作用:
found : Int
required: String
someList.map((num:Int) => { val z:Option[String] = Some(num); z })