Birincil örtük değer veya bir örtük dönüştürme tarafından aranan arasındaki ek örtülü değerler arasındaki davranış farkını açıklamakta zorlanıyorum.Scala neden bu özel durumda ikincil bir örtük değer bulamıyor?
trait Foo[A]
implicit def fooString: Foo[String] = null
implicit def value[A](implicit foo: Foo[A]) = 5
> implicitly[Int]
5
Ama bu değil: Özellikle, bu işleri
implicit def conversion[A](x: Int)(implicit foo: Foo[A]) = new {
def aMethod = 5
}
> 1.aMethod
could not find implicit value for parameter foo: test.Foo[A]
Değişen: Arama ikincil örtülü olsun implicitly
veya örtük bir dönüşüm
- sonra aranan değer polimorfik
- olup olmadığı verilen ikincil örtülü değeri polimorfik olduğu
aşağıdaki sonuçlar elde: Gördüğünüz gibi, çalışmıyor tek durum arama örtük bir dönüşüm ile başlatılır edilir
Conversion/value Searching for Supplied | Works?
---------------- ------------- -------- | ------
conversion poly poly | yes
conversion poly mono | **no**
conversion mono poly | yes
conversion mono mono | yes
value poly poly | yes
value poly mono | yes
value mono poly | yes
value mono mono | yes
, aranan değer polimorfiktir, ancak sağlanan değeri monomorfiktir.
Bunun neden olması gerektiği konusunda teorik bir neden var mı, yoksa bu Scala'nın hata/sınırlaması mı?
Doğru cevap, yanlış soru ;-) –