Для получения более подробной информации,
implcitly
ключевое слово можно объяснить следующим образом
implitly [T] означает возврата неявное значение типа T в контексте
Это означает, , для получения Foo
неявно вам нужно создать неявное значение в области
Например,
implicit class Foo(val i: Int) {
def addValue(v: Int): Int = i + v
}
implicit val foo:Foo = Foo(1)
val fooImplicitly = implicitly[Foo] // Foo(1)
Кроме того, обратите внимание, что Foo
само по себе является только класс,
Но, поставив неявное ключевое слово перед определением класса,
Компилятор создает неявную функцию типа Int => Foo
'неявно [Foo] (4)' будет возвращать 'res0: Foo = Foo @ 5d5eef3d'. –
Это по той же причине, что 'val foo: Foo = 4' компилируется. –