在Kotlin中是否有类似于Swift关键字“defer”的功能?
“defer”关键字的作用是确保在函数返回之前执行defer块中的代码。
以下是一个假设在Kotlin中存在defer关键字的示例。
class MyClass {
var timeStamp = 0L
fun isEdible(fruit: Fruit): Boolean {
defer {
timeStamp = System.currentTimeMillis()
}
if (fruit.isExpired) {
return false
}
if (fruit.isRipe) {
return true
}
return false
}
}
在上述情况下,无论函数在何时返回,
defer
块内的代码都会被执行,并且时间戳的值将在函数结束前得到更新。我知道在Java中,
finally {}
关键字与try{} catch{}
一起使用,但这并不完全是defer
所提供的。
defer
仅仅是在离开当前作用域(例如退出函数)后执行defer
块。 - dfribtry
/finally
,我认为注:try
/finally
是一种程序设计语言结构,在程序中通常用于确保无论发生什么情况,某些代码都会被执行或资源将被释放。 - Alexanderfinally
块。我记得很久以前读过一篇关于Swift的defer
的文章,将其描述为“正确使用try
和finally
”。因此,我相信你可能得到的答案并不是你要找的(至少不是Kotlin本身)。 - dfrib