2
我試圖創建一個類來學習單元測試。但是,我正面臨着一些我正在努力的問題。Swift錯誤輸出的簡單類的初始化程序
我的班級:
import Foundation
class Monster{
var name: String{
didSet(newName){
self.name = validateName(newName: self.name)
}
}
var level: Int{
didSet(level){
if self.level < 0 {
self.level = 0
}else if self.level > 100 {
self.level = 100
}
}
}
var hitpoints: Int{
didSet(newHP){
print(self.hitpoints)
if self.hitpoints < 0 {
self.hitpoints = 0
}else if self.hitpoints > self.level * 20{
self.hitpoints = self.level * 20
}
}
}
init(name: String, argLevel: Int, argHP: Int) {
self.name = name;
self.level = argLevel
// self.hitpoints = validateHP(newHP: argHP, curLevel: argLevel)
let newHP = validateHP(newHP: argHP, curLevel: argLevel)
self.hitpoints = newHP
self.name = validateName(newName: name)
}
private func validateName(newName: String) -> String{
return newName.replacingOccurrences(of: ",", with: "")
}
private func validateHP(newHP: Int, curLevel: Int) -> Int{
if newHP < 0 {
return 0
}else if newHP > 20 * curLevel {
return 20 * curLevel
}else{
return newHP
}
}
}
我不能使用這個類,因爲我得到一個錯誤,在初始化使用validateHP()函數。
錯誤:桌面/單元測試/單元測試/ Monster.swift:44:15:所有存儲的屬性初始化
在方法調用validateHP'自我'的使用之前,我不明白這條消息,我沒有在函數定義中使用任何存儲的屬性或作爲參數之一。事實上,我改變了整個參數結構,這樣就不會發生。
如果任何人都可以教我關於我在這裏失蹤的事情,那將非常有幫助。
同樣需要用'validateName'函數完成。 – rmaddy
你是對的@rmaddy。我會更新答案。 – vacawama
由於某種原因,驗證名稱正常工作,沒有靜態,看起來很奇怪。無論如何,我用你的代碼更新了它,它正在工作。謝謝。 – Quicksillver