如何使用接口类型初始化Kotlin中的变量?
我是科特林的新手。我想尝试创建react kotlin应用程序,因为我目前是react开发者,我想探索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
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")
}