Draget
12/12/2021, 1:26 AMprivate data class MyClass(val intVal: Int) {
constructor(stringVal: String) : this(someFunction(stringVal))
}
fun someFunction(stringVal: String): Int {
println("I can run some random code here")
val foo = stringVal.reversed()
return foo.toInt()
}
But how could I run code on the secondary constructor without using a function?ephemient
12/12/2021, 1:28 AMrun { ... }
private data class MyClass(val intVal: Int) {
constructor(stringVal: String) : this(
run {
println("I can run some random code here")
val foo = stringVal.reversed()
return@run foo.toInt()
}
)
}
fun MyClass(stringVal: String) : MyClass {
println("I can run some random code here")
val foo = stringVal.reversed()
return MyClass(foo.toInt())
}
Draget
12/12/2021, 9:45 AMephemient
12/12/2021, 9:59 AMclass MyClass private constructor(...) {
companion object {
operator fun invoke(...): MyClass {
// arbitrary logic here
return MyClass(...)
}
}
}
but I'd only use it in cases where the function outside doesn't work due to visibilityDraget
12/12/2021, 10:09 AMprivate data class MyClass(var intVal: Int) {
constructor(stringVal: String) : this(0) {
this.intVal = stringVal.toInt()
}
}
private data class MyClass(var intVal: Int) {
companion object {
fun ofString(stringVal: String): MyClass = MyClass(stringVal.toInt())
}
}
ephemient
12/12/2021, 5:50 PMfun String.toMyClass(): MyClass
Draget
12/12/2021, 5:56 PM