【问题标题】:Could not find an overload for '-' that accepts the supplied arguments找不到接受提供的参数的“-”的重载
【发布时间】:2014-06-04 07:53:30
【问题描述】:

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

我收到错误找不到接受提供的参数的“-”的重载

对于表示 self.health = self.health - amount

的行
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
    }
}

谢谢!

【问题讨论】:

    标签: swift


    【解决方案1】:

    使用Int,而不是Integer

    Integer 是协议,而不是类型。

    【讨论】:

      【解决方案2】:

      为了解释实际的错误信息,Swift 尝试将“-”运算符应用于 IntegerInteger,但您没有重载“-”操作员。这就是错误如此措辞的原因。 '-' 运算符适用于 IntInt,这显然是您在本例中的意图,因此您只需使用 Int 而不是 整数

      【讨论】:

        【解决方案3】:

        为了它的价值,你可能想做

        self.health -= amount
        

        而不是

        self.health = self.health - amount
        

        更加地道

        【讨论】:

          【解决方案4】:

          我认为您可能打算使用 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
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多