Порядок выполнения функции kotlin `.also {}` - PullRequest
0 голосов
/ 21 января 2020

Я знаю, .also { } предназначен для ведения журнала. Это именно то, что я хочу сделать.

var count = 1
count++.also { print("count is $it") }

В этом примере я ожидаю, что журнал будет

считать 2

Но это на самом деле печатает:

количество равно 1

Есть ли другой способ использовать здесь?

1 Ответ

6 голосов
/ 21 января 2020

Ваша проблема не связана с also.

Вы используете оператор приращения постфикса (count++), который возвращает значение переменной до ее приращения, равное 1.

Если вы используете оператор приращения префикса (++count), он сначала назначит новое значение, а затем вернет его, в данном случае 2. Обратите внимание, что в этом случае вам нужны паратезы:

(++count).also { print("count is $it") }

Вы упомянули, что also предназначен для ведения журнала. Я не думаю, что это правда. Это просто функция видимости, которая предлагает получателя как it (или как вы его называете) внутри labmda и возвращает получателя.

...