首页 > 解决方案 > kotlin `.also {}` 函数的执行顺序

问题描述

我知道.also { }旨在用于记录。这正是我想做的。

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

在这个例子中,我希望日志是

计数为 2

但它实际上打印:

计数为 1

在这里也有不同的使用方式吗?

标签: kotlinlogging

解决方案


您的问题与also.

您正在使用后缀 ( count++) 递增运算符,它返回变量在递增之前的值,即1.

如果您使用前缀增量 ( ++count) 运算符,它将首先分配新值,然后返回它,在这种情况下为2。请注意,在这种情况下您需要 paratheses:

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

您提到这also是用于记录的。我不认为这是真的。它只是一个作用域函数,它在 labmda 内部提供接收器it(或您命名它)并返回接收器。


推荐阅读