无法将Int类型的值转换为预期的参数类型' ...'

时间:2016-05-30 14:25:12

标签: ios xcode swift

我试图了解参数如何在Swift中工作,从而编写了一个简单的类,如下所示

class NumberIncreaser {


func numberIncrementor(var number:Int)->Int{
    number += 1
    return number
}


var anotherNumber = numberIncrementor(3)



}

然而即使在明确提到方法' numberIncrementor'采用Int,Xcode请求numberIncreaser对象(希望我使用正确的术语,编程新)。我注意到当我删除该类时,该方法完全正常。我想知道为什么会这样,我该如何解决它。

谢谢!

3 个答案:

答案 0 :(得分:1)

您的代码无法编译。考虑一下:

class NumberIncreaser {

    static func numberIncrementor(var number:Int)->Int{
        number += 1
        return number
    }

}

var anotherNumber = NumberIncreaser.numberIncrementor(3)

或另一个变种:

class Number {

    var number: Int

    init(number: Int) {
        self.number = number
    }

    func increasedNumber() -> Int {
        return number + 1
    }
}

var anotherNumber = Number(number: 3).increasedNumber()

答案 1 :(得分:0)

另外,不要在func参数声明中使用var:

class NumberIncreaser {
    static func numberIncrementor(number: Int) -> Int {
        let answer = number + 1
        return answer
    }
}

var anotherNumber = NumberIncreaser.numberIncrementor(3)

答案 2 :(得分:0)

var参数已被弃用,因此number是一个常量,使其不可变。您也无法调用numberIncrementor,因为它是一种实例方法。

一种方法是通过在numberIncrementorclass关键字static前面添加声明来使class func numberIncrementor成为类或静态方法,并将其称为: NumberIncreaser.numberIncrementor(3)

class NumberIncreaser {

  class func numberIncrementor(number: Int) -> Int {
    return number + 1
  }


  var anotherNumber = NumberIncreaser.numberIncrementor(3)

}

另一种方法是让anotherNumber成为一个懒惰的属性:

class NumberIncreaser {

  func numberIncrementor(number: Int) -> Int {
    return number + 1
  }


  lazy var anotherNumber: Int = self.numberIncrementor(3)

}