2015-02-17 5 views
5

यहाँ स्काला में कोड CLI है:स्पष्ट रूप से 'वापसी' लिखने और स्कैला में स्पष्ट रूप से लिखने के बीच क्या अंतर है?

scala> def ff(): Int = try {return 1} finally {return 2} 

scala> println(ff()) 
2 

scala> def gg(): Int = try {1} finally {2} 

scala> println(gg()) 
1 

मुझे पता है क्यों वहाँ भेद किया जाए या return कीवर्ड जोड़ने नहीं करना चाहते हैं? आपका बहुत बहुत धन्यवाद!

उत्तर

2

returnfinally के भीतर कथन try ब्लॉक में मूल return को अवधारणा से ओवरराइड करेगा। लेकिन अगर आप रिटर्न का उपयोग नहीं करते हैं, तो स्कैला गणना के परिणामस्वरूप try ब्लॉक की आखिरी अभिव्यक्ति चुनती है और आखिरकार इसे साइड इफेक्ट के रूप में निष्पादित किया जाता है और फ़ंक्शन के परिणाम पर इसका कोई प्रभाव नहीं पड़ता है। आप this thread पर भी एक नज़र डाल सकते हैं।

संबंधित मुद्दे