【发布时间】:2018-07-18 21:09:41
【问题描述】:
在 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 所提供的。
【问题讨论】:
-
我不使用 swift,但在功能上延迟一个异步线程,在方法返回之前“加入”主线程?
-
@Pawel
defer在 Swift 中只是在离开当前范围(例如退出函数)后执行defer块。 -
try/finally,我想 -
我第二个 @Alexander:快速浏览一下 Kotlin 的语法确实指向
finally块。我记得很久以前读过一篇关于 Swift 的defer的文章,将其描述为“try和finally做得对”。所以我相信你可能得到的答案不是你正在寻找的答案(至少是 Kotlin 原生)。 -
@rgv 您的问题得到解答了吗?
标签: android swift kotlin keyword