Следующий пример из Тур по Scala показывает, как неявные данные можно использовать для предоставления соответствующих пропущенных элементов (сложения и единицы) в зависимости от типа.Компилятор выберет правильный неявный объект в области видимости.Библиотека также использует это с 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)
Где я в основном использую неявное, чтобы сэкономить некоторую печать на месте вызова при передаче параметра по стеку.