如何在Swift中增加Int类型成员变量

34

我正在编写一款Swift应用程序,但在递增Int类型成员变量方面遇到了麻烦。

我使用以下代码创建了这个变量:

let index:Int

然后在初始化程序中,我使用以下方式对其进行实例化:

self.index = 0

后来,当我在函数中尝试使用以下任一方法对其进行递增时:

self.index++
或者
self.index = self.index + 1

我在第一种情况下被告知:“不能用类型为'Int'的参数调用'++'”,在第二种情况下被告知:“无法在'self'中将'pos'赋值”。

除了可以编写自定义版本之外,我还没有找到关于++运算符的信息,但我认为至少它是内置于整数类型中的。如果这不是真的,那么问题就解决了。

对于另一个问题,我毫无头绪。

2个回答

72

需要翻译的内容为:

In

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

相反。


谢谢帮助!我在某个地方误读了,认为属性必须使用let而不是var声明。 - NumberOneRobot
这种情况下,那些编译器错误信息完全是误导性的。 - Alex Machado
++ 运算符在 Swift 中也可以使用,例如:value++ 而不是 value ++(有时会导致编译时错误)。 - Alok
4
FYI,“++”和“--”运算符已经被Swift 3弃用并将被移除。详见:https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md - Pedro Hoehl Carvalho
@PedroHoehlCarvalho:你说得完全正确,感谢反馈。(随着语言的每一次变化,保持所有Swift答案的最新确实很困难:)) - Martin R
显示剩余2条评论

5
我认为你可以进行更改。
let index:Int

转换为

var index:Int = 0

因为您正在递增index的值,即改变它的值,所以需要将其声明为var。另外,值得知道的是let用于声明常量。
然后,您可以使用self.index++。请注意,在self.index++之间没有空格。
希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接