我有以下代码,其中我试图通过lambda表达式返回一个值。
{ message: Any ->
try {
ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray()
}
catch(e: JsonProcessingException)
{
e.printStackTrace()
}
null
},
但是,代码总是返回null。在调试时,我发现程序的执行是通过try块执行其代码,但也在try-catch块之外执行null
?为什么会发生这种情况?它不应该从try块内部返回并退出lambda表达式吗?
(表达式作为参数传递给期望函数值的函数(
删除最后一行中的null。lambda中的最后一行指定要返回的值。由于您已经将null写为最后一行,所以无论您的表达式执行什么,它总是返回null。
https://kotlinlang.org/docs/reference/lambdas.html
在catch块内移动null
。Try是的一个表达式,可以在kotlin参考中找到
像这样:
try {
ObjectMappers.getObjectMapper().writeValueAsString(message).toByteArray()
} catch(e: JsonProcessingException) {
e.printStackTrace()
null
}
返回lambda的最后一行,因此在您的情况下始终为null。