Как найти перегруженные операторы в Kotlin? - PullRequest
0 голосов
/ 21 апреля 2020

Учитывая, что в стандартной библиотеке Kotlin много перегруженных операторов, как мне найти их и соответствующие им действия для каждого класса stdlib, который их объявляет?

Пример: недавно я обнаружил, что += добавляет элемент к MutableCollection.

Я мог бы сделать это, перейдя на MutableCollections.kt и найдя там объявление ...operator...plusAssign(t: T), но о c Я понятия не имел, что он существует и его можно найти точно в этом файле.

Может быть, есть официальные ссылки, чтобы увидеть их в одном месте?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Операторские перегрузки могут быть определены где угодно (в том числе и за пределами стандартной библиотеки), поэтому составлять список всех перегрузок операторов нецелесообразно.

Список всех перегрузок можно найти в документации .

Для подведения итогов документации может быть перегружено следующее:

  • +a a.unaryPlus()
  • -a a.unaryMinus()
  • !a a.not()
  • a++ a.inc()
  • a-- a.dec()
  • a + b a.plus(b)
  • a - b a.minus(b)
  • a * b a.times(b)
  • a / b a.div(b)
  • a % b a.rem(b), a.mod(b) (deprecated)
  • a..b a.rangeTo(b)
  • a[i] a.get(i)
  • a[i, j] a.get(i, j)
  • a[i_1, ..., i_n] a.get(i_1, ..., i_n)
  • a[i] = b a.set(i, b)
  • a[i, j] = b a.set(i, j, b)
  • a[i_1, ..., i_n] = b a.set(i_1, ..., i_n, b)
  • a() a.invoke()
  • a(i) a.invoke(i)
  • a(i, j) a.invoke(i, j)
  • a(i_1, ..., i_n) a.invoke(i_1, ..., i_n)
  • a += b a.plusAssign(b)
  • a -= b a.minusAssign(b)
  • a *= b a.timesAssign(b)
  • a /= b a.divAssign(b)
  • a %= b a.remAssign(b), a.modAssign(b) (deprecated)
  • a == b a?.equals(b) ?: (b === null)
  • a != b !(a?.equals(b) ?: (b === null))
  • a > b a.compareTo(b) > 0
  • a < b a.compareTo(b) < 0
  • a >= b a.compareTo(b) >= 0
  • a <= b a.compareTo(b) <= 0* 1 136 *
0 голосов
/ 21 апреля 2020

На Перегрузке оператора На странице документации вы найдете Расширенные назначения .

enter image description here

Вы можете использовать List<T> += T или List<T>.plusAssign(T).

Если вы хотите быстро найти мини-игру c (и вы используете IntelliJ / Android Studio), вы можете удерживать CTRL + Q , это покажет мини-диалог, содержащий достаточно информации.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...