स्कैला प्रकार Nothing
प्रकार पदानुक्रम के नीचे (जैसा कि मैं इसे समझता हूं) का प्रतिनिधित्व करता है, जो प्रतीक den द्वारा भी दर्शाया गया है। यही है, Nothing
किसी दिए गए प्रकार का उप-प्रकार है। टाइप सिद्धांत में सैद्धांतिक पृष्ठभूमि के बिना Nothing
प्रकार explained well by James Iry के लिए आवश्यकता है!यदि वर्ग पदानुक्रम के नीचे कुछ भी प्रकार नहीं है, तो मैं इस पर किसी भी कल्पनीय विधि को क्यों नहीं बुला सकता?
तो मेरे सवाल है, अगर Nothing
हर प्रकार की एक उप-प्रकार है, मैं क्यों नहीं Nothing
पर किसी भी प्रकार के तरीकों कॉल कर सकते हैं क्या है? जाहिर है, मैं कुछ भी नहीं कर सकता लेकिन निम्नलिखित संकलन क्यों नहीं करता?
var n: Nothing = _
def main(args: Array[String]) {
println(n.length) //compile error: value length is not a member of Nothing
}
Nothing
रूप
निश्चित रूप से String
की एक उप-प्रकार इस ठीक होना चाहिए है? ध्यान दें कि निम्नलिखित संकलित बस ठीक है!
var n: Nothing = _
def foo(s: String) : Int = s.length
def main(args: Array[String]) {
println(foo(n))
}
करता है:
def main(args: Array[String]) {
println(n.asInstanceOf[String].length)
}
विचार करने की एक और बात यह है कि 'एन। लम्बाई' में स्कैला के बारे में जानने का कोई तरीका नहीं है कि आप किस विधि के बारे में बात कर रहे हैं - और आपको यह जानना होगा कि इससे पहले कि आप इसके तर्क (या 'यह' तर्क) सही प्रकार है। 'Foo (n)' में यह पहले से ही स्पष्ट है। – Owen