考える:スカラ:暗黙的に暗黙のクラスに
implicit class Foo(val i: Int) {
def addValue(v: Int): Int = i + v
}
はそれが可能適用されるimplicitly
のですか? は、私がここでエラーが出ます:
<console>:14: error: could not find implicit value for parameter e: Foo
implicitly[Foo]
考える:スカラ:暗黙的に暗黙のクラスに
implicit class Foo(val i: Int) {
def addValue(v: Int): Int = i + v
}
はそれが可能適用されるimplicitly
のですか? は、私がここでエラーが出ます:
<console>:14: error: could not find implicit value for parameter e: Foo
implicitly[Foo]
implicit class Foo(val i: Int)
はInt
からFoo
へ暗黙の変換があることを意味します。だからimplicitly[Int => Foo]
はうまくいくはずです。
Foo
をimplicitly[Foo]
と召喚することができる場合は、Foo
となりますか? Foo(0)
? A Foo(1)
? A Foo(2)
?さらなる詳細について
、
implcitly
キーワードは[T]はコンテキスト手段
タイプTの戻り暗黙値を意味implitly
を以下のように説明することができます
例えば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'がコンパイルされるのと同じ理由によるものです。 –