我是Kotlin的新手。我想尝试使用create-react-kotlin-app,因为我目前是一名反应开发人员,并且想探索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)
}
}
我的gm
变量没有被初始化,我不知道该怎么做。
我需要用道具来初始化我的GameUi组件,但是我不知道该怎么做。
所以GameUiProps来自我的组件
interface GameUiProps : RProps {
var numPlayers: Int
var playerArray: Array<String>
var cardArray: Array<String>
}
class GameUi(props: GameUiProps) : RComponent<GameUiProps, RState>(props) {
private fun RBuilder.createHands() {
var numPlayers = props.numPlayers
val handArray: ArrayList<Unit> = ArrayList()
while (numPlayers > 0) {
handArray.add(
handUi(
props.playerArray[numPlayers],
props.cardArray[numPlayers]
)
)
numPlayers--
}
}
override fun RBuilder.render() {
div {
h1("sweet") {
+"RKT"
}
div {
createHands()
}
}
}
}
答案 0 :(得分:1)
您的GameUiProps
只是一个接口,因此您不能直接实例化它。
您拥有的(val gm: GameUiProps
)只是字段声明,而没有为其分配任何内容。您显然无法访问或写入任何属性。
您需要使用构造函数或匿名对象创建一个简单的实现。
在构造函数中声明所有接口字段的类:
class GameUiPropsImpl(
override var numPlayers: Int,
override var playerArray: Array<String>,
override var cardArray: Array<String>) : GameUiProps
然后在您的fun main
中:
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")
}