无法找到接受提供的参数的' - '的重载

时间:2014-06-04 07:53:30

标签: swift

我是第一次玩Swift,我不明白为什么这不起作用。任何帮助都会很棒!

我收到错误无法找到' - '接受提供的参数

表示 self.health = self.health - 金额

的行
class human {
    var name:String
    var height:Integer
    var hairColor:String
    var health:Integer

    init(name:String, height:Integer, hairColor:String) {
        self.name = name
        self.height = height
        self.hairColor = hairColor
        self.health = 100
    }

    func applyDamage(amount:Integer) -> Integer{
        self.health = self.health - amount
        return self.health
    }
}

谢谢!

4 个答案:

答案 0 :(得分:9)

使用Int,而不是Integer

Integer是一种协议,而不是类型。

答案 1 :(得分:3)

为了解释实际的错误消息,Swift尝试将“ - ”运算符应用于整数整数,但是您没有超载' - '运营商。这就是错误措辞原因。 ' - '运算符适用于 Int Int ,这显然是您在此实例中的意图,因此您只需要使用 Int < / strong>而不是整数

答案 2 :(得分:2)

对于它的价值,您可能想要

self.health -= amount

而不是

self.health = self.health - amount

更加惯用

答案 3 :(得分:0)

我认为您可能打算使用Int而不是Integer。这段代码工作正常:

class human {
    var name:String
    var height:Int
    var hairColor:String
    var health:Int

    init(name:String, height:Int, hairColor:String) {
        self.name = name
        self.height = height
        self.hairColor = hairColor
        self.health = 100
    }

    func applyDamage(amount:Int) -> Int{
        self.health = self.health - amount
        return self.health
    }
}