English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل Kotlin الأساسي

تحكم Kotlin

الوظائف في Kotlin

الخطوط في Kotlin

Kotlin موجه الأعضاء (OOP)

عميل Kotlin

في هذا المقال،ستتعلم عن تعريف عميل (تعريف كيف يعمل عميل للأنواع المحددة من المستخدمين (مثل الأعضاء)).

عند استخدام operator في كوتلن،سيتم استدعاء وظيفة الأعضاء الم相对应 لها. على سبيل المثال،سيتم تحويل التعبير a + b إلى a.plus(b) في الخلفية.

fun main(args: Array<String>) {
    بالتالي a = 5
    بالتالي b = 10
    اطبع a.plus(b)) // اطبع (a+b)
{}

عند تشغيل هذا البرنامج، الناتج سيكون:

15

في الواقع،تم تعريف وظيفة plus() لمعالجة أنواع البيانات الأساسية المختلفة لكوتلن وString (النص).

// + عميل الأساسي العمليات الحسابية
عميل plus(other: Byte): Int
عميل plus(other: Short): Int
operator fun plus(other: Int): Int
operator fun plus(other: Long): Long
operator fun plus(other: Float): Float
operator fun plus(other: Double): Double
// لربط النصوص
operator fun String?.plus(other: Any?): String

يمكنك أيضًا تعريف كيفية عمل العمليات على الكائن من خلال إعادة تعريف الدوال. على سبيل المثال، تحتاج إلى إعادة تعريف دالة plus() لتعريف كيفية عمل عمليات الحساب '+' على الكائن.

مثال: إعادة تعريف عمليات الحساب

fun main(args: Array<String>) {
    val p1 = Point(3, -8)
    val p2 = Point(2, 9)
    var sum = Point()
    sum = p1 + p2
    println(" مجموع = (${sum.x}، ${sum.y})")
{}
class Point(val x: Int = 0, val y: Int = 10) {
    // إعادة تعريف دالة plus
    operator fun plus(p: Point): Point {
        return Point(x + p.x, y + p.y)
    {}
{}

عند تشغيل هذا البرنامج، الناتج سيكون:

sum = (5, 1)

في هذا، يتم تسمية دالة plus() باستخدام كلمة المفتاح operator لإخبار المبرمج أن عمليات الحساب '+' معادلة.

تحويل تعبير p1 + p2 في الخلفية إلى p1.plus(p2).

مثال: إعادة تعريف عمليات الحساب

في هذا المثال، ستتعلم كيفية إعادة تعريف عمليات الحساب.

dec() member function does not take any parameters.

fun main(args: Array<String>) {
    var point = Point(3, -8)
    --point
    println("point = (${point.x}, ${point.y})")
{}
class Point(var x: Int = 0, var y: Int = 10) {
    operator fun dec() = Point(--x, --y)
{}

عند تشغيل هذا البرنامج، الناتج سيكون:

point = (2, -9)

تذكر،

operator fun dec() = Point(--x, --y)

يساوي

operator fun dec(): Point {
    return Point(--x, --y)
{}

ملاحظات عدة

1- عند إعادة تعريف العمليات يجب المحافظة على وظيفة العمليات الأصلية. على سبيل المثال،

fun main(args: Array<String>) {
    val p1 = Point(3, -8)
    val p2 = Point(2, 9)
    var sum = Point()
    sum = p1 + p2
    println(" مجموع = (${sum.x}، ${sum.y})")
{}
class Point(val x: Int = 0, val y: Int = 10) {
    //تحميل وظيفة plus
    operator fun plus(p: Point) = Point(x - p.x, y - p.y)
{}

على الرغم من أن البرنامج المذكور أعلاه صحيح من الناحية التقنية، إلا أننا نستخدم عمليات الإضافة (+) لاستبعاد الخصائص المتبادلة للأشياء، مما يجعل البرنامج معقدًا.

2- على عكس لغات مثل Scala، يمكن في Kotlin فقط تحميل مجموعة محددة من العمليات.