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 AMephemient
12/12/2021, 1:29 AMrun { ... }
ephemient
12/12/2021, 1:30 AMprivate 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()
}
)
}
ephemient
12/12/2021, 1:30 AMephemient
12/12/2021, 1:33 AMfun 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 AMephemient
12/12/2021, 10:03 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()
}
}
Draget
12/12/2021, 10:15 AMprivate 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 PMDraget
12/12/2021, 5:58 PM