Scala隐式转换多个参数

时间:2014-01-15 07:34:08

标签: scala implicit

我一直认为Scala隐式转换只能接受一个参数,如果你需要从多个参数转换,你会使用一个元组。但是,我很惊讶地发现Scala 2.10.3实际上接受了这个(愚蠢的)定义而没有问题:

scala> implicit def foo(i: Int, j: Int): Int = i
foo: (i: Int, j: Int)Int

有没有办法或理由使用这样的多参数隐式?

1 个答案:

答案 0 :(得分:1)

并非所有implicit功能都是转换!

任何带有单个参数的隐式函数都可以用作转换,但这不是implicits的唯一用例。

函数只是另一种类型,因此,您可以在(implicit fn: (Int, Int) => Int)

中指定隐式参数

我不会这样做,你打算作为隐含传递的任何东西应该有一个更具体的类型,更好地自我记录它的预期目的。