एक वर्ग के अंदर, val
मूल्यांकन पर मूल्यांकन किया जाता है , जबकि def
केवल जब मूल्यांकन किया जाता है, और हर बार , फ़ंक्शन को कहा जाता है। नीचे दिए गए कोड में आप देखेंगे कि x का मूल्यांकन पहली बार किया गया है जब ऑब्जेक्ट का उपयोग किया गया है, लेकिन फिर से नहीं जब एक्स सदस्य तक पहुंच हो। इसके विपरीत, y का मूल्यांकन तब नहीं किया जाता है जब ऑब्जेक्ट को त्वरित किया जाता है, लेकिन हर बार सदस्य तक पहुंचने के दौरान इसका मूल्यांकन किया जाता है।
class A(a: Int) {
val x = { println("x is set to something"); a }
def y = { println("y is set to something"); a }
}
// Prints: x is set to something
val a = new A(1)
// Prints: "1"
println(a.x)
// Prints: "1"
println(a.x)
// Prints: "y is set to something" and "1"
println(a.y)
// Prints: "y is set to something" and "1"
println(a.y)
f1
में, REPL में मूल्यांकन, मूल्यांकनf1
करते समय सांख्यिकीय रूप से बाध्य दिखाता हैf2
और उन तरीकोंf3
को लागू करने का परिणाम दिखाता है । विशेष रूप से,Function1[Int, Int]
हर बार या तो एक नया उदाहरण तैयार किया जाता है याf2
फिरf3
इसे लागू किया जाता है, जबकि हमेशा केf1
लिए ऐसा ही होताFunction1[Int, Int]
है।