đ§ āĻāĻāϞিāύে āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ (Backing Field) āϏāĻšāĻ āĻাāώাā§
đ§ āĻāĻāϞিāύে āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ (Backing Field) āϏāĻšāĻ āĻাāώাā§
đ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻি?
āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻšāϞো āĻেāϤāϰেāϰ āĻāĻāĻি āϏ্āĻোāϰেāĻ (storage), āϝা āĻোāύো āĻ্āϝাāϰিā§েāĻŦāϞ (property) āĻāϰ āĻāϏāϞ āĻŽাāύ āϏংāϰāĻ্āώāĻŖ āĻāϰে।
đ āϏāĻšāĻ āĻাāώাā§: āĻŽāύে āĻāϰুāύ, āĻāĻĒāύি āĻāĻāĻি āĻŦ্āϝাংāĻ āĻ ্āϝাāĻাāĻāύ্āĻ āĻুāϞেāĻেāύ đĻ। āĻāĻĒāύি āϝāϤ āĻাāĻা āĻāĻŽা āĻĻেāύ āĻŦা āϤুāϞেāύ, āĻŦ্āϝাংāĻ āϏেāĻাāϰ āĻšিāϏাāĻŦ āϰাāĻে। āĻāĻাāύে āĻŦ্āϝাংāĻেāϰ āϏেāĻ āĻšিāϏাāĻŦেāϰ āĻাāϤা āĻšāĻ্āĻে āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ! đ°
āĻāĻāϞিāύে āϝāĻāύ āĻāĻŽāϰা custom getter āĻŦা setter āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰি, āϤāĻāύ āϝāĻĻি āĻāĻŽāϰা āϏেāĻ āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻāϏāϞ āĻŽাāύ āϏংāϰāĻ্āώāĻŖ āĻāϰāϤে āĻাāĻ, āϤāĻāύ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻĻāϰāĻাāϰ āĻšā§।
đ āĻোāĻĄ āĻāĻĻাāĻšāϰāĻŖ (Basic Example)
āĻāĻŽāϰা āĻাāĻ, name āύাāĻŽেāϰ āĻāĻāĻি āĻĒ্āϰāĻĒাāϰ্āĻি āĻĨাāĻুāĻ, āĻিāύ্āϤু āϝāĻāύāĻ āĻেāĻ name āϏেāĻ āĻāϰāĻŦে, āϤāĻāύ āϤা āĻ
āĻো āĻ্āϝাāĻĒিāĻাāϞ āϞেāĻাāϰে āϏেāĻ āĻšāĻŦে।
class Person {
var name: String = "Unknown"
get() = field // āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āĻŽাāύ āϰিāĻাāϰ্āύ āĻāϰāĻŦো
set(value) {
field = value.uppercase() // āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄে āύāϤুāύ āĻŽাāύ āϰাāĻāĻি
}
}
fun main() {
val p = Person()
p.name = "rahim"
println(p.name) // Output: RAHIM
}
✅ āĻি āĻšāϞো āĻāĻাāύে?
fieldāĻšāĻ্āĻে āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ, āϝা name āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻāϏāϞ āĻŽাāύ āϧāϰে āϰাāĻāĻে।- āϝāĻāύāĻ
nameāϏেāĻ āĻāϰা āĻšā§, āϏেāĻি uppercase āĻāϰে āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄে āϏংāϰāĻ্āώāĻŖ āĻšāĻ্āĻে। - āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻাā§া āϏāϰাāϏāϰি
name = value.uppercase()āϞিāĻāϞে Stack Overflow Error āĻšāϤে āĻĒাāϰে।
đ¯ āĻāĻāύ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻĻāϰāĻাāϰ?
1️⃣ āϝāĻāύ setter āĻāϰ āĻŽāϧ্āϝে āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻŽাāύ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰāϤে āĻাāĻ।
2️⃣ āϝāĻāύ getter āĻĨেāĻে āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻāϏāϞ āĻŽাāύ āĻĢেāϰāϤ āĻĻিāϤে āĻাāĻ।
3️⃣ āϝāĻāύ āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻŽাāύ āϏংāϰāĻ্āώāĻŖ āĻāϰāϤে āĻাāĻ, āĻিāύ্āϤু āϏāϰাāϏāϰি āϏেāĻ āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āϰেāĻĢাāϰেāύ্āϏ āύেāĻ।
⚠️ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻাā§া āĻি āĻšāĻŦে? (Stack Overflow Issue)
āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻাā§া āϝāĻĻি āϏāϰাāϏāϰি āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻŽাāύ āϏেāĻ āĻāϰা āĻšā§, āϤাāĻšāϞে Stack Overflow Error āĻšāϤে āĻĒাāϰে।
❌ āĻুāϞ āĻোāĻĄ:
class Person {
var name: String = "Unknown"
get() = name // đ¨ āĻুāϞ! āĻāĻি āĻāĻŦাāϰ `name` āĻে āĻāϞ āĻāϰāĻŦে, āϝা āϞুāĻĒ āϤৈāϰি āĻāϰāĻŦে।
set(value) {
name = value.uppercase() // đ¨ āĻুāϞ! āĻāĻি `name` āĻে āĻŦাāϰāĻŦাāϰ āϏেāĻ āĻāϰāĻŦে।
}
}
⛔ āĻāĻি āĻāύāĻĢিāύিāĻ āϰিāĻাāϰāĻļāύ āϤৈāϰি āĻāϰāĻŦে āĻāĻŦং āĻ ্āϝাāĻĒ āĻ্āϰ্āϝাāĻļ āĻāϰāĻŦে!
✅ āϏāĻ িāĻ āĻোāĻĄ:
class Person {
var name: String = "Unknown"
get() = field // ✅ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻি
set(value) {
field = value.uppercase() // ✅ āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄে āĻŽাāύ āϏংāϰāĻ্āώāĻŖ āĻāϰāĻি
}
}
đ āĻļেāώ āĻāĻĨা (Takeaway)
- āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ (
field) āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞে āĻāĻŽāϰা āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻāϏāϞ āĻŽাāύ āϏংāϰāĻ্āώāĻŖ āĻāϰāϤে āĻĒাāϰি। - āĻāĻি āĻļুāϧু āϤāĻāύāĻ āĻĻāϰāĻাāϰ, āϝāĻāύ custom getter/setter āϞিāĻāϤে āĻšā§।
- āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āϏ্āĻ্āϝাāĻ āĻāĻাāϰāĻĢ্āϞো āϏāĻŽāϏ্āϝা āĻĒ্āϰāϤিāϰোāϧ āĻāϰে।
đ¯ āĻļāϰ্āĻāĻাāĻ āĻŽāύ্āϤ্āϰ:
Backing Field = āĻেāϤāϰেāϰ āĻাāϤা (Storage), āϝেāĻাāύে āĻĒ্āϰāĻĒাāϰ্āĻিāϰ āĻāϏāϞ āĻŽাāύ āĻĨাāĻে! đĨ
đ¤ āĻāĻāύ āĻি āĻŦ্āϝাāĻিং āĻĢিāϞ্āĻĄ āĻĒāϰিāώ্āĻাāϰ? āĻোāύো āĻĒ্āϰāĻļ্āύ āĻĨাāĻāϞে āĻিāĻ্āĻেāϏ āĻāϰুāύ! đ
Comments
Post a Comment