我正在编写Swift应用程序并且无法递增Int类型成员变量。
我用
创建了变量let index:Int
然后在初始化程序中我使用
实例化它self.index = 0
稍后,当我尝试使用
中的任何一个在函数中递增它时self.index++
或
self.index = self.index + 1
在第一种情况下,我被告知“不能使用'Int'类型的参数调用'++',而在第二种情况下,”不能在'self'中分配'pos'。“
我无法找到关于++运算符的信息,除了你可以编写它的自定义版本,但我认为它至少内置于整数类型。如果那不是真的那么就回答了这个问题。
另一个我不知道的问题。
谢谢!
答案 0 :(得分:37)
在
class MyClass {
let index : Int
init() {
index = 0
}
func foo() {
index++ // Not allowed
}
}
index
是常量存储的属性。它可以给出一个初始值
let index : Int = 0
并且只能在初始化期间修改 (当初始化完成时,它必须有一个确定的值。)
如果要在初始化后更改值 那么你必须将它声明为变量存储属性:
var index : Int
Swift文档中"Properties"的更多信息。
请注意,++
和--
在Swift 2.2中已弃用并已删除
在Swift 3中(如评论中所述),所以 - 如果声明为变量 -
你用
index += 1
代替。
答案 1 :(得分:2)
我认为你可以改变
let index:Int
到
var index:Int = 0
由于您要增加index
的值,更改其值,您需要将其声明为var
。此外,值得知道let
用于声明常量。
然后,您可以使用self.index++
。请注意,self.index
和++
之间没有空格。
希望这会有所帮助。