私は迅速です。私は迅速にApp Developmentのエクササイズをやっています。クラスのメンバーワイズ初期化子と参照。エラー:プロパティで 'self'を使用しています
この問題の解決方法はわかりません。問題は、すべてのデフォルト値を指定せずに独自のイニシャライザを作成することです。
class Spaceship {
let name: String
var health: Int = 100
var position: Int = 0
func moveLeft() {
position -= 1
}
func moveRight() {
position += 1
}
func wasHit() {
health -= 5
}
init(name:String, health:Int, position:Int) {
self.name = name
self.health = health
self.position = position
}
}
class Fighter: Spaceship {
let weapon: String
var remainingFirePower: Int
init(weapon:String,remainingFirePower:Int) {
self.weapon = weapon
self.remainingFirePower = remainingFirePower
super.init(name: name, health: health, position: position)
}
func fire() {
if remainingFirePower > 0 {
remainingFirePower -= 1
} else {
print("You have no more fire power.")
}
}
}
class ShieldedShip: Fighter {
var shieldStrength: Int
override func wasHit() {
if shieldStrength > 0 {
shieldStrength -= 5
} else {
super.wasHit()
}
}
init(shieldStrength:Int, weapon:String, remainingFirePower:Int){
self.shieldStrength = shieldStrength
super.init(weapon:weapon, remainingFirePower:remainingFirePower)
}
}
あなたのsmをデバッグするにはひどい場所ですすべてのプログラム。 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/あなた自身でこれを解決するためにどのような措置を講じましたか? – jdv
名前、健康状態、位置に値を与えると、プログラムは完璧に動作します。私は、これよりもむしろプログラムを解決する他の方法があるのだろうかと思っています。問題は、すべてのデフォルト値を指定せずに独自のイニシャライザを作成することです。 – sam
完全に動作する場合は、完全に動作しなくなる場所を把握する方法があります。あなたが行っている間、あなたの主張をテストして、知られている者から知られていない者まで働きなさい。 – jdv