Sobes.tech
Junior — Middle

Kotlin-ში 'by' ოპერატორის გამოყენების შემდეგ განაწილებული თვისების მისაწვდომია?

sobes.tech AI

პასუხი AI-სგან

ඔව්, Kotlin හි by මෙහෙයුම්කරු භාවිතා කිරීමෙන් පසු, ඔබට නියමිතවම වෙන්වූ දේපළට සෘජුවම ප්‍රවේශ විය හැකිය, මන්ද එම නියමිත දේවල් වෙනම වස්තුවක සුරක්ෂිත වේ, එයට ප්‍රවේශ විය හැකිය.

නියමිත දේවල් පැහැදිලිව ප්‍රකාශිත නම්, ඔබට එයට යොමු කිරීමක් තබා එය සෘජුවම භාවිතා කළ හැකිය. උදාහරණයක් ලෙස:

import kotlin.reflect.KProperty

class Delegate {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        return "ගුණාංගයේ අගය"
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        println("අගය සකසමින්: $value")
    }
}

class Example {
    var prop: String by Delegate()
}

fun main() {
    val example = Example()
    println(example.prop) // නියමිත ගුණාංග මාර්ගයෙන් ප්‍රවේශ වීම
    example.prop = "අලුත් අගය"
}

ඔබට නියමිත දේවල්වලට සෘජුවම ප්‍රවේශ වීමට අවශ්‍ය නම්, එය ප්‍රතිබිම්බ භාවිතා කරමින් කළ හැක:

val delegate = Example::prop.getDelegate(example)

මෙම ආකාරයෙන්, නියමිත දේවල් සාමාන්‍ය ලෙස භාවිතා කළ හැකි අතර, අවශ්‍ය නම්, නියමිත දේවල්ට සෘජුවම ප්‍රවේශ විය හැකිය.