(我知道这里已经问过这个问题: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”,但是对于不同的结构:
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访问结构的成员。
有没有人有办法做到这一点?