我一直认为Scala隐式转换只能接受一个参数,如果你需要从多个参数转换,你会使用一个元组。但是,我很惊讶地发现Scala 2.10.3实际上接受了这个(愚蠢的)定义而没有问题:
scala> implicit def foo(i: Int, j: Int): Int = i
foo: (i: Int, j: Int)Int
有没有办法或理由使用这样的多参数隐式?
答案 0 :(得分:1)
并非所有implicit
功能都是转换!
任何带有单个参数的隐式函数都可以用作转换,但这不是implicits的唯一用例。
函数只是另一种类型,因此,您可以在(implicit fn: (Int, Int) => Int)
我不会这样做,你打算作为隐含传递的任何东西应该有一个远更具体的类型,更好地自我记录它的预期目的。