如何使用接口类型初始化Kotlin中的变量?

如何使用接口类型初始化Kotlin中的变量?,kotlin,create-react-kotlin-app,Kotlin,Create React Kotlin App,我是科特林的新手。我想尝试创建react kotlin应用程序,因为我目前是react开发者,我想探索kotlin 我很难实例化我的变量。我正在尝试这样做: fun main(args: Array<String>) { val rootDiv = document.getElementById("root") val gm : GameUiProps gm.numPlayers = 2 gm.cardArray = arrayOf("Card to

我是科特林的新手。我想尝试创建react kotlin应用程序,因为我目前是react开发者,我想探索kotlin

我很难实例化我的变量。我正在尝试这样做:

fun main(args: Array<String>) {
    val rootDiv = document.getElementById("root")
    val gm : GameUiProps
    gm.numPlayers = 2
    gm.cardArray = arrayOf("Card to be dealt", "Cards to be Dealt")
    gm.playerArray = arrayOf("Player 1", "Player 2")

    RBuilder.render(rootDiv) {
        GameUi(gm)
    }
}

您的
GameUiProps
只是一个接口,因此无法直接实例化它

您所拥有的(
val-gm:GameUiProps
)只是字段声明,没有为其分配任何内容。显然,您无法访问或写入任何属性

您需要使用构造函数创建一个简单的实现,或者创建一个匿名对象

类,该类声明构造函数中的所有接口字段:

class GameUiPropsImpl(
    override var numPlayers: Int, 
    override var playerArray: Array<String>, 
    override var cardArray: Array<String>) : GameUiProps
或者使用实现接口的匿名类:

val gm = object: GameUiProps{
    override var numPlayers = 2
    override var playerArray = arrayOf("Player 1", "Player 2")
    override var cardArray = arrayOf("Card to be dealt", "Cards to be Dealt")
}
val gm = GameUiPropsImpl(2, arrayOf("Player 1", "Player 2"), arrayOf("Card to be dealt", "Cards to be Dealt"))
val gm = object: GameUiProps{
    override var numPlayers = 2
    override var playerArray = arrayOf("Player 1", "Player 2")
    override var cardArray = arrayOf("Card to be dealt", "Cards to be Dealt")
}