/ / SWIFTの最初のステップ-swift

SWIFTの最初のステップ - 迅速

私にはクラスがあります 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)")

}

}