'How to pass object as argument in Kotlin

I have these two objects A and B I want to use these objects interchangeably in the digit class like shown in this snippet code

internal object A {
    internal const val ZERO = "ZERO"
    internal const val ONE = "ONE"
}

internal object B {
    internal const val ZERO = "ZERO"
    internal const val ONE = "UN"
}


class Digit(Lang: String) {
    private var X: Any? = null

    init {
        when (Lang) {
            "eng" -> X = A
            "fr" -> X = B
        }
    }

    fun spell() {
        println(X.ZERO)
    }
}

I want inside the Digit class to use both objects, not at the same time, only when I want the English language the Digit class use object A and when I want french language the Digit class use the object B.

I should use reflection? or is there a better design?



Solution 1:[1]

data class Translation(val ZERO: String, val ONE: String)

val a = Translation(ZERO = "ZERO", ONE = "ONE")
val b = Translation(ZERO = "ZERO", ONE = "UN")

class Digit(Lang: Translation) {

  private val x = Lang

  fun spell() {
    println(x.ONE)
  }

}

Digit(a).spell()
Digit(b).spell()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 lukas.j