English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال،ستتعلم عن تعريف عميل (تعريف كيف يعمل عميل للأنواع المحددة من المستخدمين (مثل الأعضاء)).
عند استخدام 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 فقط تحميل مجموعة محددة من العمليات.