考虑这段代码
def foo(b: Int) = ???
val a = 3
foo(a)
它当然可以正常工作,但是让我们说后来我决定foo
应该支持空输入,所以我将它的签名更改为
def foo(b: Option[Int]) = ???
现在foo(a)
无法编译,因为a
不是Option[Int]
,而是Int
。所以你必须说a = Some(3)
或foo(Some(a))
,这对我来说似乎是多余的。
我的问题是,为什么该语言没有从T
到Some[T]
的隐式转换(反之亦然)?
自己实施一个是个好主意吗?