मुझे प्राथमिक अंतर्निहित मूल्य या निहित रूपांतरण द्वारा मांगी गई अतिरिक्त निहित मूल्यों के बीच व्यवहार में अंतर को समझने में कठिनाई हो रही है। विशेष रूप से, यह काम करता है:स्कैला इस विशेष मामले में द्वितीयक अंतर्निहित मूल्य क्यों नहीं ढूंढ पाता है?
trait Foo[A]
implicit def fooString: Foo[String] = null
implicit def value[A](implicit foo: Foo[A]) = 5
> implicitly[Int]
5
लेकिन यह नहीं करता है:
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]
परिवर्तनीय:
- खोज चाहे माध्यमिक निहित द्वारा
implicitly
या एक अंतर्निहित रूपांतरण - शुरू कर दिया गया है या नहीं मूल्य मांगने के बाद polymorphic
- चाहे माध्यमिक अंतर्निहित मूल्य की आपूर्ति की बहुरूपी है
मैं निम्नलिखित परिणाम प्राप्त:
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
आप देख सकते हैं, केवल मामले वह काम नहीं करता है जब खोज एक अंतर्निहित रूपांतरण द्वारा शुरू किया गया है, मांग की गई कीमत polymorphic है, फिर भी आपूर्ति आपूर्ति monomorphic है।
क्या कोई सैद्धांतिक कारण है कि यह मामला क्यों होना चाहिए, या यह स्कैला की बग/सीमा है?
सही उत्तर, गलत प्रश्न ;-) –