Kotin中的错误消息断言

lin*_*nqu 5 assert kotlin

从Java切换后我在Kotlin中感到很舒服,并且无法找到如何结合错误消息使用Kotlin的断言功能.

听起来很简单,我只需要类似Java的东西

assert count > 5 : "value too small"
Run Code Online (Sandbox Code Playgroud)

我试过了

assert(count > 5, "value too small")
Run Code Online (Sandbox Code Playgroud)

但是,第二个论点需要() -> Any.怎么实现呢?

Ale*_*lov 6

assert的message参数不是String,而是返回String的函数.这是因为否则,因为它assert是一个普通的Kotlin函数,所以每次都会评估它的参数,这会导致在字符串是复杂表达式的情况下计算消息字符串的不必要的开销(有时会改变语义).

要传递函数参数,请使用lambda语法.作为lambda的最后一个参数可能会被排除在括号之外:

assert(count > 5) { "value too small" }
Run Code Online (Sandbox Code Playgroud)


lin*_*nqu 5

我自己搞定的,我需要声明一个不带参数的 lambda 函数,在 Kotlin 中是这样的:

assert(count > 5, {"value too small"})
assert(count > 5, { -> "value too small"})
Run Code Online (Sandbox Code Playgroud)

对不起,打扰你!我留下这个问题,也许其他一些初学者会发现它很有用。