From b99862200d75cfe2ca094d0547811996b7c4d0f9 Mon Sep 17 00:00:00 2001 From: Temon137 Date: Tue, 20 Jun 2017 15:30:06 +0400 Subject: [PATCH] Update operator-overloading.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен отсутствующий пример. --- operator-overloading.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/operator-overloading.md b/operator-overloading.md index ed9cc1f..b311abd 100644 --- a/operator-overloading.md +++ b/operator-overloading.md @@ -50,6 +50,18 @@ Further we describe the conventions that regulate operator overloading for diffe *Примечание*: эти операции, как и все остальные, оптимизированы для [основных типов](basic-types.html) и не вносят накладных расходов на вызовы этих функций для них. + +Например, вы можете перегрузить оператор унарного минуса: + +``` kotlin +data class Point(val x: Int, val y: Int) + +operator fun Point.unaryMinus() = Point(-x, -y) + +val point = Point(10, 20) +println(-point) // выведет "(-10, -20)" +``` + ### Инкремент и декремент @@ -121,6 +133,21 @@ Further we describe the conventions that regulate operator overloading for diffe in Kotlin 1.1.--> Отметим, что операция `rem` поддерживается только начиная с Kotlin 1.1. Kotlin 1.0 использует только операцию `mod`, которая отмечена как устаревшая в Kotlin 1.1. + +#### Пример + + +Ниже приведен пример класса Counter, начинающего счёт с заданного значения, которое может быть увеличено с помощью перегруженного оператора `+`. + +``` kotlin +data class Counter(val dayIndex: Int) { + operator fun plus(increment: Int): Counter { + return Counter(dayIndex + increment) + } +} +``` + +