Аналог инфиксной функции от Kotlin в Java - PullRequest
0 голосов
/ 13 июня 2019

Пытаться глубоко понять в инфиксных функциях.Не могли бы вы привести пример решения из Java, которое можно решить с помощью инфикса из Kotlin.PS Пожалуйста, дайте мне знать, если мой вопрос неверен, если вы хотите посвятить его.Это помогает мне задавать лучшие вопросы

Ответы [ 2 ]

3 голосов
/ 13 июня 2019

Kotlin поддерживает оператор перегрузки и инфиксные функции , Java также не поддерживает.

Эти языковые функции являются просто синтаксическим сахаром.Все, что вы делаете с операторами или инфиксными функциями, может быть выполнено без, но они могут очень помочь с удобочитаемостью вашего кода.

Инфиксная функция похожа на именованный оператор и может вызываться без точки и скобок.Пример из документации выглядит следующим образом:

    infix fun Int.shl(x: Int): Int { ... }

    // calling the function using the infix notation
    1 shl 2

    // is the same as
    1.shl(2)

Другой пример - для настройки времени.Мне нравится определять инфиксные функции, такие как

infix fun TemporalAmount.before(instant: Instant): Instant =
    instant.minus(this)

, которые позволяют мне писать

val yesterday = Period.ofDays(1) before Instant.now()

вместо

val yesterday = Instant.now().minus(Period.ofDays(1))
2 голосов
/ 13 июня 2019

В Java нет аналогичной концепции.Как объяснено в официальной документации , она позволяет вам вызывать функцию без . и (), что делает ее более чистой и менее многословной.Например:

infix fun Int.shl(x: Int): Int { ... }

// calling the function using the infix notation
1 shl 2

// is the same as
1.shl(2)

Как видите, это не решает ничего, что не может быть решено обычным вызовом функции.Это просто синтаксис сахара.

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