[英]Cannot convert value of type Int to expected Argument type '...'
我试图了解参数在 Swift 中的工作原理,因此编写了一个简单的类,如下所示
class NumberIncreaser {
func numberIncrementor(var number:Int)->Int{
number += 1
return number
}
var anotherNumber = numberIncrementor(3)
}
然而,即使在明确提到方法 'numberIncrementor' 采用 Int 之后,Xcode 也会要求一个 numberIncreaser 对象(希望我使用的是正确的术语,编程新手)。 我注意到当我删除该类时,该方法运行良好。 我想知道为什么会这样,我该如何解决。
谢谢!
你的代码不会编译。 考虑一下:
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()
另外,不要在 func 参数声明中使用 var:
class NumberIncreaser {
static func numberIncrementor(number: Int) -> Int {
let answer = number + 1
return answer
}
}
var anotherNumber = NumberIncreaser.numberIncrementor(3)
var
参数已被弃用,因此 number 是一个常量,使其不可变。 您也不能调用numberIncrementor
因为它是一个实例方法。
一个出路是通过在声明前加上class
或static
关键字来使numberIncrementor
成为一个类或静态方法: 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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.