स्काला की एक उपयोगी विशेषता है lazy val
, जहां एक के मूल्यांकन में val
देरी होती है जब तक यह आवश्यक नहीं है (पहली पहुंच में)।
बेशक, lazy val
कुछ ओवरहेड होना चाहिए - कहीं न कहीं स्काला को इस बात का ध्यान रखना चाहिए कि क्या मूल्य का मूल्यांकन पहले से ही किया गया है और मूल्यांकन को सिंक्रनाइज़ किया जाना चाहिए, क्योंकि कई थ्रेड्स एक ही समय में पहली बार मूल्य तक पहुंचने का प्रयास कर सकते हैं।
वास्तव में इसकी लागत क्या है lazy val
- क्या एक छुपा बूलियन झंडा है जिसे lazy val
ट्रैक रखने के लिए जुड़ा हुआ है यदि इसका मूल्यांकन किया गया है या नहीं, क्या वास्तव में सिंक्रनाइज़ किया गया है और क्या कोई और लागत है?
इसके अलावा, मान लीजिए कि मैं ऐसा करता हूं:
class Something {
lazy val (x, y) = { ... }
}
क्या यह दो अलग-अलग lazy val
s के समान है x
और y
क्या मुझे जोड़ी के लिए केवल एक बार ओवरहेड प्राप्त होता है (x, y)
?
bitmap$0
वर्तमान कार्यान्वयन (2.8) में क्षेत्र अस्थिर है।