以下来自A Tour of Scala的示例展示了如何使用隐式来根据类型提供适当的缺失成员(add 和 unit)。编译器将在范围内选择正确的隐式对象。例如,该库还将其与and或and一起使用。List.sortBy
Ordering
List.sum
Numeric
但是,B 类中的以下用法是隐式参数的有效/推荐用法(与 A 类中不使用隐式参数相反):
class I
class A {
def foo(i:I) { bar(i) }
def bar(i:I) { baz(i) }
def baz(i:I) { println("A baz " + i) }
}
(new A).foo(new I)
class B {
def foo(implicit i:I) { bar }
def bar(implicit i:I) { baz }
def baz(implicit i:I) { println("B baz " + i) }
}
(new B).foo(new I)
在沿堆栈传递参数时,我主要使用隐式在调用站点为自己节省一些输入。