私にはクラスがあります Master
私のゲームのプレイヤーを表します。
計算プロパティisAliveを追加する必要があります Master
プレーヤーのライフポイントに基づいたオブジェクト。プレーヤーが死んでいるか生きているかを判断できます。
また、HP(ライフ)ポイントの量が異なる10人のプレイヤーの配列も必要です。
次に、まだ生きているプレイヤーのみに配列をフィルターする必要があります。最後のステップは、結果の配列をマップし、このテーブルをリストとして表示することです。
Import Foundation
class Master {
let playerName : String = ""
let hp : Int = 0
var isAlive : Bool {
get{ return hp >0
}
}
let avatar : String? = nil
init (playerName: String, hp: Int, isAlive: Bool, avatar: String? = nil ) {
self.playerName = playerName
self.hp = hp
self.isAlive = isAlive
self.avatar = avatar
}
extension Master: CustomStringConvertible {
var description: String() {
if(avatar.isEmpty){
return name + " - (" + isAlive + " / " + hp + ") - Nie posada
awatara"
}else{
return name + " - (" + isAlive + " / " + hp + ") - Posiada awatar"
}
}
}
}
class MasterViewController: UIViewController {
var masters = [Master]()
override func viewDidLoad() {
super.viewDidLoad()
(0..<10).forEach { masters.append(Master(playerName: "q"+$0, hp: 12 +
$0,
avatar: nil)
(playerName: "w"+$1, hp: 12 +
$1,
avatar: nil)
(playerName: "e"+$2, hp: 12 +
$2,
avatar: nil)
(playerName: "qw"+$3, hp: 12 +
$3,
avatar: nil)
(playerName: "we"+$4, hp: 12 +
$4,
avatar: nil)
(playerName: "2"+$5, hp: 12 +
$5,
avatar: nil))}
let aliveMasters = masters.filter { $0.isAlive }
let mappedMasters: [String] = masters.map { $0.playerName }
print("Alive Masters are : (mappedMasters)")
}
}
回答:
回答№1は1計算されたプロパティは、プロパティへのアクセス方法を制御するための単なる方法であり、変更できます。
let isAlive : Bool
〜へ:
var isAlive: Bool {
get {
return hp > 0
}
}
また、init(_ :)からすべてのisAliveステップ参照を削除し、計算されたプロパティを保持します。
次に、モデルを使用して別のView Controllerから:
class MasterViewController: UIViewController {
var masters = [Master]()
override func viewDidLoad() {
super.viewDidLoad()
// add array with 10 players with hp points
masters.append(Master(playerName: "John Doe", hp: 100, avatar: nil))
masters.append(Master(playerName: "Jack Jones", hp: 50, avatar: nil))
masters.append(Master(playerName: "Susan Scott", hp: 150, avatar: nil))
// Add any masters here ...
// Another way of doing it : (0..<10).forEach { masters.append(Master(playerName: ""+$0, hp: 12 + $0, avatar: nil)) }
// filter array to return alive players
let aliveMasters = masters.filter { $0.isAlive }
// map the resulenter code hereting array and display this table as a list.
// Here aliveMasters is already an array of Masters, map is used to "transform" data
let mappedMasters: [String] = masters.map { $0.playerName }
print("Alive Masters are : (mappedMasters)")
}
}