如何通过在Swift中将其名称作为函数参数来访问结构成员?

时间:2017-02-25 17:34:03

标签: swift struct types

(我知道这里已经问过这个问题:Access a struct property by its name as a string in Swift但是我不想使用switch / case语句,结构是强制性的。)

我有一个功能:

func computeStat(_ pokemon: Pokemon,_ stat: String) {
  let level = 1
  return Int((Int(((2*pokemon.species.base_values.stat + pokemon.stat+Int(pokemon.effort_values.stat/4))*pokemon.level)/100)+5)*level)
}

正如你所看到的,我想把成员称为“stat”,但是对于不同的结构:

  • base_values
  • 小宠物
  • effort_values

Stat可以采用5种不同的值(攻击,防御等)。我在getter中调用函数:

  get {
    let stats = Stats(
        hitpoints: computeHp(self),
        attack: computeStat(self, "attack"),
        defense: computeStat(self, "defense"),
        special_attack: computeStat(self, "special_attack"),
        special_defense: computeStat(self, "special_defense"),
        speed: computeStat(self, "speed")
    )

    return stats
  }

当然,我的函数不能正常工作,因为我试图用String访问结构的成员。

有没有人有办法做到这一点?

0 个答案:

没有答案