kotlin `.also {}` 函数的执行顺序

Pun*_*ika 0 logging kotlin

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

var count = 1
count++.also { print("count is $it") }
Run Code Online (Sandbox Code Playgroud)

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

计数为 2

但它实际上打印:

计数为 1

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

Wil*_*zel 6

您的问题与also.

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

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

(++count).also { print("count is $it") }
Run Code Online (Sandbox Code Playgroud)

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

  • 你需要使用括号。`(++count).also { print("count 是 $it") }` (2认同)