【问题标题】:How do you access/modify specific elements in a List in Haxe?您如何访问/修改 Haxe 列表中的特定元素?
【发布时间】: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


    【解决方案1】:

    我正在寻找与 Java 的 ArrayList 等效的数据结构,它是可调整大小和索引的。

    Array 是你想要的,它们是“动态数组”,所以它们会自动调整大小。

    List是链表,用的不多。

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      相关资源
      最近更新 更多