タグ付けされた質問 「implicits」

2
Scalaは暗黙的にどこを探しますか?
Scalaの初心者への暗黙の質問は、コンパイラが暗黙の場所をどこで探すのでしょうか。言葉がなかったかのように質問が完全に形づくられることは決してないように見えるので、私は暗黙のうちに意味します。:-)たとえば、integral以下の値はどこから来ますか? scala> import scala.math._ import scala.math._ scala> def foo[T](t: T)(implicit integral: Integral[T]) {println(integral)} foo: [T](t: T)(implicit integral: scala.math.Integral[T])Unit scala> foo(0) scala.math.Numeric$IntIsIntegral$@3dbea611 scala> foo(0L) scala.math.Numeric$LongIsIntegral$@48c610af 最初の質問への回答を学ぶことにした人に続く別の質問は、明白な曖昧さのある特定の状況(しかし、とにかくコンパイル)で、コンパイラがどの暗黙の使用を選択するかです。 例えば、scala.Predefから2つの変換を定義StringするいずれかWrappedStringと相互にStringOps。ただし、どちらのクラスも多くのメソッドを共有しているので、たとえば、Scalaが呼び出し時にあいまいさについて不平を言わないのはなぜmapですか? 注:この質問は、問題をより一般的な方法で述べることを期待して、この別の質問に触発されました。この例は、回答で参照されているため、そこからコピーされました。


3
Scalaの識別子は「暗黙的に」何ですか?
implicitlyScalaの例で使用されているという名前の関数を見てきました。それは何ですか、それはどのように使用されますか? ここに例: scala> sealed trait Foo[T] { def apply(list : List[T]) : Unit }; object Foo { | implicit def stringImpl = new Foo[String] { | def apply(list : List[String]) = println("String") | } | implicit def intImpl = new Foo[Int] { | def apply(list : List[Int]) = println("Int") | …
169 scala  implicits 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.