If you want to use a data class you can use this workaround
data class Direction(var vector_: Vector3D) {
init {
vector_ = vector_.normalize()
}
val vector = vector_
}
not the best but the data class relies on the modified version of your vector. The name in the constructor is slightly different but you can’t access vector
in the constructor so no error can be made and you don’t lose the power of the data class (hash and equals) nor the immutability
1 Like
This example is terrible. Firstly vector
is not updated when you change vector_
. Secondly you shouldn’t declare properties with backing fields in data classes except in the primary constructor.
If you really need something like this use
data class Foo(private var _test: Vec3) {
var test: Vec3
get() = _test
set(v) {
_test = transform(v)
}
init {
_test = transform(test)
}
}
sorry I forgot the private
in the constructor in my example.
data class Direction(private var vector_: Vector3D) {
Adding the private in my case shows the case of an immutable data class with custom transformers whereas yours shows a mutable data class with custom transformers.
Thanks for calling my previous example terrible
i am new to Kotlin and had no one to guide me , please help me with this error
i am really stuck because of this