tsj*_*nsn 1 scala type-inference implicit
有没有办法在匹配之前调用x上的这个隐式方法来满足匹配的类型要求?
如果我直接调用它,它按预期工作,但我想知道是否可以推断出该调用.
object ImplicitTest extends App {
implicit def denull[T<:Any](mightBeNull:T):Option[T] = {
if (mightBeNull == null) None
else Some(canBeNull)
}
var x:String = null
x match { //works if i do "denull(x) match {"
case Some(str:String) =>
println(str)
case None => None
}
}
Run Code Online (Sandbox Code Playgroud)
而不是denull你应该使用的方法Option.apply.它做同样的事情.应始终明确处理可能的空值!隐式转换很危险,对于必须使用代码的其他人来说可能会造成混淆.像这样做:
Option(x) match {}
Run Code Online (Sandbox Code Playgroud)
或者在大多数情况下甚至更好:
Option(x).fold { ... } { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |