Kotlin中无法从列表获取cardValue值的问题求助
问题分析与解决
你的问题出在Cards类的构造函数参数上:只有cardName用了val修饰,成为了类的属性,而cardValue和amountDeck只是普通的构造函数参数,没有被声明为类的成员,所以外部无法通过实例访问它们。
修改方案
给cardValue和amountDeck加上val(如果不需要修改属性值就用val,需要修改则用var),这样它们就会被提升为类的属性,外部可以正常访问:
class Cards(val cardName: String = "", val cardValue: Int = 0, val amountDeck: Int = 4) {} public var allCards = listOf<Cards>( Cards("One", 1), Cards("Two", 2), Cards("Three", 3), Cards("Four", 4), Cards("Five", 5), Cards("Six", 6), Cards("Seven", 7), Cards("Eight", 8), Cards("Nine", 9), Cards("Ten", 10), Cards("Eleven", 11), Cards("Twelve", 12), Cards("Ace", 10), Cards("Queen", 10), Cards("Jack", 10), Cards("King", 10) ) fun drawCard(randomValue: Int) { val currentName: String = allCards[randomValue].cardName val currentValue: Int = allCards[randomValue].cardValue }
补充说明
在Kotlin中,构造函数参数如果没有val/var修饰,仅能在构造函数内部使用,不会成为类的成员属性。只有添加val(只读属性)或var(可变属性)修饰符,参数才会被转化为类的属性,允许外部通过类实例访问。
内容的提问来源于stack exchange,提问作者Noel Pettersson
相关产品推荐
相关产品推荐

