English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعلم باستخدام مثال كيفية استخدام getter وsetter في Kotlin.
قبل تعلم getter وsetter، من الأفضل أن تكون قد فهمتفئات Kotlin وغيرها.
في البرمجة، getter يستخدم لاستخراج قيمة الخاصية. بنفس الطريقة، يستخدم setter لضبط قيمة الخاصية.
في Kotlin، getter وsetter إختياري، إذا لم يتم إنشاؤهما في البرنامج، سيتم إنشاؤهما تلقائيًا.
الكود التالي في Kotlin
class Person { var name: String = "defaultValue" }
مثل
class Person { var name: String = "defaultValue" // getter get() = field // setter set(value) { field = value } }
عند تعريف جسم Person والبدء في خاصية name، سيتم تمرير قيمة المعامل إلى setters وسيتم تعيين field بمقارنة value.
val p = Person() p.name = "jack"
الآن، عندما تصل إلى خاصية name للجسم، بسبب الكود get()=field، ستحصل على field
println("${p.name}")
هذا مثال يعمل:
fun main(args: Array<String>) { val p = Person() p.name = "jack" println("${p.name}") } class Person { var name: String = "defaultValue" get() = field set(value) { field = value } }
عند تشغيل هذا البرنامج، الناتج هو:
jack
بالافتراض، هذا هو كيف يعمل getter وsetter. ولكن، يمكنك استخدام getter وsetter لتغيير قيمة الخاصية (تعديل القيمة).
fun main(args: Array<String>) { val maria = Girl() maria.actualAge = 15 maria.age = 15 println("玛莉亚: 实际年龄 = ${maria.actualAge}") println("玛莉亚: 虚拟年龄 = ${maria.age}") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("安戈洛: 实际年龄 = ${angela.actualAge}") println("安戈洛: 虚拟年龄 = ${angela.age}") } class Girl { var age: Int = 0 get() = field set(value) { field = if (value < 18) 18 else if (value >= 18 && value <= 30) value else value-3 } var actualAge: Int = 0 }
عند تشغيل هذا البرنامج، الناتج هو:
ماري: العمر الفعلي = 15 ماري: العمر الافتراضي = 18 أنغولو: العمر الفعلي = 35 أنغولو: العمر الافتراضي = 32
في هذا السياق، يعمل ActialAge كما هو متوقع.
لكن، يمكن تعديل logic setter لتحديث قيمة age.