我试图了解参数如何在Swift中工作,从而编写了一个简单的类,如下所示
class NumberIncreaser {
func numberIncrementor(var number:Int)->Int{
number += 1
return number
}
var anotherNumber = numberIncrementor(3)
}
然而即使在明确提到方法' numberIncrementor'采用Int,Xcode请求numberIncreaser对象(希望我使用正确的术语,编程新)。我注意到当我删除该类时,该方法完全正常。我想知道为什么会这样,我该如何解决它。
谢谢!
答案 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
,因为它是一种实例方法。
一种方法是通过在numberIncrementor
或class
关键字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)
}