मैं स्कैला के संरचनात्मक प्रकारों के साथ खेल रहा था जब मुझे पता चला कि मुझे एक बग की तरह दिखता है। यहाँ मेरी कोड है:संरचनात्मक प्रकार और प्राइमेटिव
type toD = { def toDouble: Double }
def foo(t: toD) = t.toDouble
foo(5)
और मैं यह त्रुटि आई:
java.lang.NoSuchMethodException
at scala.runtime.BoxesRunTime.toDouble(Unknown Source)
at .foo(<console>:9)
at .<init>(<console>:11)
at .<clinit>(<console>)
at .<init>(<console>:11)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
at scala.tools.nsc.interpreter.IMain$Request$$anonfun$14.apply(IMain.scala:920)
at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:43)
at scala.tools.nsc.io.package$$anon$2.run(package.scala:25)
at java.lang.Thread.run(Unknown Source)
पहले, मैं क्यों यह काम नहीं कर रहा पता नहीं है। दूसरा, यह अजीब बात है कि कोड ठीक से संकलित करता है और रनटाइम पर अपवाद फेंकता है कि यह विधि वास्तव में मौजूद नहीं है।
क्या किसी के पास इसके लिए स्पष्टीकरण है?
ध्यान दें कि यह उदाहरण स्काला 2.10 विकास संस्करण में काम करता है । लेकिन यह नहीं कह रहा है कि संरचनात्मक प्रकारों और बक्से वाले प्राइमेटिव के पूरे गन्दा क्षेत्र को पूरी तरह से स्वच्छ किया जाता है। – Debilski
एक और गन्दा कामकाज: 'foo (5.asInstanceOf [toD])' काम करता है। – Jus12