【发布时间】:2017-11-28 14:15:04
【问题描述】:
在 kotlin native 中,有一个 memScoped 函数,当控制超出范围时,它会自动释放分配的内存。 是否有类似本地对象的析构函数?
【问题讨论】:
标签: kotlin native kotlin-native
在 kotlin native 中,有一个 memScoped 函数,当控制超出范围时,它会自动释放分配的内存。 是否有类似本地对象的析构函数?
【问题讨论】:
标签: kotlin native kotlin-native
当前的 Kotlin/Native 不提供当内存中不再需要某个对象时调用方法的机制(Java 语音中的终结器),但内联 lambda 很容易实现机制,类似于 C++ 中的 RAII。例如,如果您想确定某些资源在离开一定范围后总是被释放,您可以这样做:
class Resource {
fun take() = println("took")
fun free() = println("freed")
}
inline fun withResource(resource: Resource, body: () -> Unit) =
try {
resource.take()
body()
} finally {
resource.free()
}
fun main(args: Array<String>) {
withResource(Resource()) {
println("body")
}
}
【讨论】: