如何 return 来自 Kotlin 断言的错误消息
How to return Error Message from assertion in Kotlin
从 Java 切换到 Kotlin 后,我对 Kotlin 感到很舒服,但无法找到如何结合使用 Kotlin 的 assert 函数和错误消息。
听起来很简单,我只需要类似于Java的东西
assert count > 5 : "value too small"
我试过了
assert(count > 5, "value too small")
但是,第二个参数需要是() -> Any
。如何实现?
我自己搞定的,我需要声明一个没有参数的lambda函数,在Kotlin中是这样的:
assert(count > 5, {"value too small"})
assert(count > 5, { -> "value too small"})
抱歉打扰了!我留下这个问题,也许其他初学者会发现它有用。
assert
的message参数不是String,而是一个返回String的函数。之所以如此,是因为否则,由于 assert
是一个普通的 Kotlin 函数,它的参数每次都会被计算,这将导致在字符串是复杂的情况下计算消息字符串的不必要的开销(有时会改变语义)表达式。
要传递函数参数,请使用 lambda syntax。最后一个参数是 lambda 可以从括号中省略:
assert(count > 5) { "value too small" }
从 Java 切换到 Kotlin 后,我对 Kotlin 感到很舒服,但无法找到如何结合使用 Kotlin 的 assert 函数和错误消息。
听起来很简单,我只需要类似于Java的东西
assert count > 5 : "value too small"
我试过了
assert(count > 5, "value too small")
但是,第二个参数需要是() -> Any
。如何实现?
我自己搞定的,我需要声明一个没有参数的lambda函数,在Kotlin中是这样的:
assert(count > 5, {"value too small"})
assert(count > 5, { -> "value too small"})
抱歉打扰了!我留下这个问题,也许其他初学者会发现它有用。
assert
的message参数不是String,而是一个返回String的函数。之所以如此,是因为否则,由于 assert
是一个普通的 Kotlin 函数,它的参数每次都会被计算,这将导致在字符串是复杂的情况下计算消息字符串的不必要的开销(有时会改变语义)表达式。
要传递函数参数,请使用 lambda syntax。最后一个参数是 lambda 可以从括号中省略:
assert(count > 5) { "value too small" }