如何在Swift中增加Int-typed成员变量

Num*_*bot 17 ios swift

我正在编写一个Swift应用程序并且无法递增Int类型成员变量.

我创建了变量

let index:Int
Run Code Online (Sandbox Code Playgroud)

然后在初始化程序中我使用实例化它

self.index = 0
Run Code Online (Sandbox Code Playgroud)

后来,当我尝试使用其中任何一个在函数中递增它

self.index++
Run Code Online (Sandbox Code Playgroud)

要么

self.index = self.index + 1
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,我被告知"不能用'Int'类型的参数调用'++',而在第二种情况下,'不能在'self'中分配'pos'".

我无法找到关于++运算符的信息,除了你可以编写它的自定义版本,但我认为它至少内置于整数类型.如果那不是真的那么就回答了这个问题.

另一个我不知道的问题.

谢谢!

Mar*_*n R 43

class MyClass {

    let index : Int

    init() {
        index = 0
    }

    func foo() {
        index++ // Not allowed 
    }
}
Run Code Online (Sandbox Code Playgroud)

index是一个常量 存储属性.它可以给出初始值

let index : Int = 0
Run Code Online (Sandbox Code Playgroud)

并且只能在初始化期间进行修改 (并且在初始化完成时它必须具有确定的值.)

如果要在初始化后更改值,则必须将其声明为变量存储属性:

var index : Int
Run Code Online (Sandbox Code Playgroud)

有关Swift文档中"属性"的更多信息.

需要注意的是,++--在雨燕2.2弃用,在斯威夫特3(如在评论中提及)去掉,所以-如果声明为一个变量 -你增加它与

index += 1
Run Code Online (Sandbox Code Playgroud)

代替.

  • 仅供参考,FYI,++和-运算符已弃用,并将在Swift 3上删除。https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement。 md (2认同)

小智 5

我想你可以改变

let index:Int
Run Code Online (Sandbox Code Playgroud)

进入

var index:Int = 0
Run Code Online (Sandbox Code Playgroud)

因为您要增加 的值index,更改其值,所以需要将其声明为var。另外,值得注意的是它let用于声明常量。

然后,您可以使用self.index++. self.index请注意,和之间没有空格++

希望这会有所帮助。