更改初始数组值Swift

时间:2018-11-01 16:16:19

标签: arrays swift

我正在尝试更改初始数组值,但不确定如何执行。

示例:

var players = ["Peter", "John", "Michael"]
var rules = ["\(players.randomElement()!) has to run", "\(players.randomElement()!) is the best"]

players.removeAll()
players.append("Gina", "Martin")
print(rules)

然后我要它打印Gina或Martin。

2 个答案:

答案 0 :(得分:0)

这是因为规则不知道玩家改变了他们的价值观。您需要在更改播放器后重新设置规则,或打印播放器来代替规则

答案 1 :(得分:0)

如果希望每次访问rules时选择一个新的player,则需要将rules设为计算属性。

var players = ["Peter", "John", "Michael"]
var rules: [String] {
    return ["\(players.randomElement()!) has to run", "\(players.randomElement()!) is the best"]
}

players.removeAll()
players.append("Gina", "Martin")
print(rules)

或者,如果您只是想在更新rules的基础上根据新的players自动刷新players,则可以向players添加属性观察器。

var rules = [String]()
var players = ["Peter", "John", "Michael"] {
    didSet {
        if players.count > 0 {
            rules = ["\(players.randomElement()!) has to run", "\(players.randomElement()!) is the best"]
        } else {
            rules = []
        }
    }
}

rules = ["\(players.randomElement()!) has to run", "\(players.randomElement()!) is the best"]
print(rules)
players.removeAll()
players.append(contentsOf: ["Gina", "Martin"])
print(rules)