【发布时间】:2021-10-15 12:18:01
【问题描述】:
我是 Haxe 的新手,我正在寻找与 Java 的 ArrayList 等效的数据结构,它可以调整大小和索引。 Haxe 的List 只允许访问它的第一个和最后一个元素。
这是我的用例:
我有一个类 Deck,它代表一副 52 张扑克牌。 Card 类型的对象存储在 List<Card> 中。
class Deck {
var cards:List<Card>;
public function new() {}
public function init() {
cards = new List<Card>();
for (i in 1...5) { // iterate over suits
for (j in 1...14) { // iterate over values
cards.add(new Card(j, SuitFunctions.toSuit(i)));
}
}
}
}
现在我想实现一个函数shuffle 洗牌。
public function shuffle() {
var j:Int, k:Int;
var c:Card;
for (i in 1...1000000) {
j = Std.random(cards.length);
k = Std.random(cards.length);
c = getCardAt(j);
setCardAt(j, getCardAt(k));
setCardAt(k, c);
}
}
但 Haxe 中的 Lists 未编入索引。我将如何实现函数getCardAt(Int) 和setCardAt(Int, Card)?签名应该是这样的:
function getCardAt(i:Int):Card {
// ToDo
return new Card(0, Suit.ERROR);
}
function setCardAt(i:Int, c:Card) {
// ToDo
}
或者,是否有更适合这种情况的不同数据结构?例如,Arrays 是否可以在 Haxe 中调整大小和索引?
最好的问候。
【问题讨论】:
标签: data-structures haxe