.append()到自定义结构的集合

scottevans93

我有一个struct用于创建,改组和发牌的定制游戏。

struct Card {
    let pip : Pip
    let suit : Suit

    var isFaceCard : Bool {
        return pip.rawValue > 10
    }

    var color : CardColor {
        return suit.color
    }
}

其次,我有一个球员字典,每个球员都有一张纸牌收藏。

 var Players = ["Scott": [Card](), "Bob": [Card](), "John": [Card]()]

为了有效地从已经洗牌的牌组中进行处理,我计划遍历玩家的词典两次,每次都发一张卡,就像实况一样。

是否可以简单地将Card类型附加到Card集合中?我的尝试似乎没有奏效。d作为一个洗牌甲板)的类型。

Players["Scott"].append(d.deal())

编辑1

通过为每个玩家使用结构,我添加了这个

struct Player {
   let name : String
   var cards : [Card]
}
var Players = [Player]()
Players.append(Player(name:"Scott"))

我必须在初始化时给玩家他们的“卡”,还是可以在以后发给他们?由于上面的代码会产生错误。

Players.append(Player(name:"Scott", cards: [Card]()))

以上是正确的吗?

埃里克·艾雅(Eric Aya)

直接回答:

如果玩家可以拥有一组纸牌,则“玩家”应该是一个结构,并且该结构应包含一组纸牌作为属性。我建议在这里完全不使用字典。

编辑后:

您走在正确的轨道上。

你不必,如果你初始化自己创建一个为你的结构让玩家自己的卡在初始化:

struct Player {
    let name : String
    var cards : [Card] = []

    init(name: String) {
        self.name = name
    }
}

这样做会取消自动生成成员初始化器,只有您的初始化器可用。

但是,如果要保留自动的成员初始化程序,则可以在初始化时传递一个空的卡数组,如下所示:

struct Player {
    let name : String
    var cards : [Card]
}

let joe = Player(name: "Joe", cards: [])

发表评论后:

如果将所有播放器都放在一个数组中,则可以使用indexOf闭包谓词来获取特定播放器,例如:

struct Player {
    let name : String
    var cards : [Card] = []

    init(name: String) {
        self.name = name
    }

    func fold() {
        print("\(name) just folded")
    }
}

var players = [Player]()
players.append(Player(name: "Joe"))
players.append(Player(name: "Jane"))
players.append(Player(name: "Jack"))
players.append(Player(name: "Janice"))

if let janeIndex = players.indexOf({ $0.name == "Jane" }) {
    players[janeIndex].fold()
}

假设您希望所有玩家弃牌,但其中一位可以使用filter

let notJack = players.filter { $0.name != "Jack" }
notJack.forEach { $0.fold() }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从自定义光标到集合的抓取

来自分类Dev

从自定义集合(结构数组)中读取数据

来自分类Dev

将集合绑定到自定义控件属性

来自分类Dev

将集合绑定到自定义控件属性

来自分类Dev

JSON到自定义对象层次结构

来自分类Dev

将图像解析到ios中的“集合视图自定义”单元格中

来自分类Dev

将DataGrid.Columns集合绑定到自定义WPF UserControl中的祖先

来自分类Dev

WPF双向数据绑定到可观察集合中的自定义数据类型

来自分类Dev

如何将自定义集合类从VB.NET传递到VB6?

来自分类Dev

如何排序自定义实体的集合?

来自分类Dev

mongodb自定义集合/文档方法

来自分类Dev

与Linq转置自定义集合

来自分类Dev

自定义集合(属于T)

来自分类Dev

如何排序自定义实体的集合?

来自分类Dev

创建自定义集合视图布局

来自分类Dev

用Java创建自定义集合

来自分类Dev

SQL Alchemy中的自定义集合

来自分类Dev

自定义可观察集合android

来自分类Dev

自定义类和集合类

来自分类Dev

Firestore - 嵌套集合的自定义对象

来自分类Dev

流星反应性地将某些字段从用户集合复制到自定义用户配置文件集合

来自分类Dev

从bing映射中提取数据以插入到自定义数据结构中

来自分类Dev

检查自定义结构是否相等

来自分类Dev

WordPress自定义类别层次结构

来自分类Dev

如何正确哈希自定义结构?

来自分类Dev

Django自定义网址结构

来自分类Dev

Rust打印选项自定义结构

来自分类Dev

PyQt自定义数据结构

来自分类Dev

自定义Python模块结构