Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does kotlin-native have destructors?

In kotlin native there is memScoped function that automatically free allocated memory when control is going out of scope. Is there something like destructors for local objects?

like image 575
Vladimir Berezkin Avatar asked Jun 25 '17 15:06

Vladimir Berezkin


1 Answers

Current Kotlin/Native does not provide mechanism for calling a method when certain object is no longer needed in memory (finalizer in Java speech) but inline lambdas easily allow to implement mechanisms, similar to RAII in C++. For example, if you want to be sure, that some resource is always released after leaving certain scope, you may do:

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") 
   }
}
like image 190
Nikolay Igotti Avatar answered Oct 07 '22 16:10

Nikolay Igotti