यह एक अलग तंत्र, आंकिक प्रकार के लिए अद्वितीय के माध्यम से होता है, सांख्यिक चौड़ा करने कहा जाता है।
SLS 6.26.1 Value Conversions का कहना है:
निम्नलिखित पांच अंतर्निहित रूपांतरण एक अभिव्यक्ति ई जो कुछ मान प्रकार टी है और जो कुछ अपेक्षित प्रकार pt साथ टाइप-चेक किया गया है के लिए लागू किया जा सकता है।
स्टेटिक ओवरलोडिंग संकल्प
प्रकार आरंभ होने
संख्यात्मक चौड़ा
संख्यात्मक शाब्दिक संकुचन
मूल्य को छोड़ने से
देखें आवेदन
गतिशील सदस्य Selec tion
(ठीक है, कि पांच से अधिक है .... यकीन नहीं क्यों :)
ब्याज में से एक संख्यात्मक चौड़ा है:
तो ई एक आदिम संख्या प्रकार है अपेक्षित प्रकार के लिए weakly conforms, यह संख्यात्मक रूपांतरण विधियों में से एक का उपयोग करके अपेक्षित प्रकार तक बढ़ाया गया है toShort
, toChar
, toInt
, toLong
, toFloat
, toDouble
परिभाषित here।
3.5.16 Weak Conformance कहते
कुछ स्थितियों में स्काला एक अधिक सामान्य अनुरूपता संबंध का उपयोग करता है। एक प्रकार एस कमजोर रूप से एक प्रकार टी के अनुरूप होता है, लिखित एस <: डब्ल्यूटी, यदि एस <: टी या दोनों एस और टी आदिम संख्या प्रकार हैं और एस निम्नलिखित क्रम में टी से पहले है।
Byte <:w Short
Short <:w Int
Char <:w Int
Int <:w Long
Long <:w Float
Float <:w Double
तो println(i.total)
println(i.total.toFloat)
क्योंकि Int <:w <: Long <: Float
हो जाता है।
जावा (और सी # और कई अन्य भाषाओं) में संख्यात्मक चौड़ाई है, और स्कैला ने इसे रखने का फैसला किया।
ध्यान दें कि रिवर्स काम नहीं करता है: Float
को इस तरह से Int
में पूरी तरह से परिवर्तित नहीं किया जा सकता है, क्योंकि आयाम खो जा सकता है; यह एक "चौड़ा" नहीं है।
आप -Ywarn-numeric-widen
जोड़ सकते हैं और ऐसा होने पर चेतावनी प्राप्त कर सकते हैं।
रूपांतरणों को चौड़ा करना अलग-अलग रूपांतरणों से अलग है: https://developmentality.wordpress.com/2011/01/24/scala-type-inferencing-gotchas/ –
भाषा संदर्भ में कमजोर अनुरूपता समझने में मदद कर सकती है (ये अंतर्निहित नहीं हैं रूपांतरण): http://www.scala-lang.org/files/archive/spec/2.11/03-types.html#weak-conformance और यह प्रश्न: http://stackoverflow.com/q/3094380 –