scala
सीखने जब मैं निम्नलिखित अजीब टुकड़ा पर ठोकर खाई:स्केल किसी संख्या को अक्षर निर्दिष्ट करते समय कोई संकलन-समय त्रुटि नहीं देता है?
package temptests
object TempTest {
//def 2 = 123 // does not compile
val 2 = 123 // compiles, but leads to an exception at runtime
def main(args: Array[String]) = { // just do something to load this class
println("Hello")
}
}
मैं उम्मीद होती है कि संकलक val 2 = 123
पर एक त्रुटि फेंक क्योंकि पहचानकर्ता अंक के साथ शुरू नहीं करना चाहिए होगा, लेकिन कोड एक चेतावनी के बिना संकलित करता है।
Exception in thread "main" java.lang.ExceptionInInitializerError at temptests.TempTest.main(TempTest.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: scala.MatchError: 123 (of class java.lang.Integer) at temptests.TempTest$.(TempTest.scala:5) at temptests.TempTest$.(TempTest.scala) ... 6 more
मैं बस उत्सुक हूँ: कैसे val 2 = 123
Scala
द्वारा समझा जाता है हालांकि, क्रम में इसे तुरंत एक अपवाद फेंकता है? कोई संकलन-समय त्रुटि क्यों नहीं है?
मैं 100% यकीन है कि यह डुप्लिकेट है हूँ, लेकिन मैं मुझे के जीवन के लिए एक नहीं मिल सकता है! –