在kotlin原生中,有一个memScoped函数,当控制超出作用域时,它会自动释放分配的内存。有没有类似于局部对象的析构函数?
发布于 2017-06-26 15:46:00
当前的Kotlin/Native没有提供当内存中不再需要某个对象时调用方法的机制( Java speech中的终结器),但内联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")
}
}https://stackoverflow.com/questions/44747862
复制相似问题