使用增量运算符会产生构建错误 "swift Unary operator '++' cannot be applied to an operand of type 'Int'"
Use of increment operator gives build error "swift Unary operator '++' cannot be applied to an operand of type 'Int'"
在 Basic Operators 部分,Swift 编程语言指南指出 ++ 是有效的运算符:
“More complex examples include the logical AND operator && (as in if
enteredDoorCode && passedRetinaScan) and the increment operator ++i,
which is a shortcut to increase the value of i by 1.”
摘自:苹果公司“Swift 编程语言。”电子书。 https://itun.es/gb/jEUH0.l
但是,在游乐场尝试此操作时;
import UIKit
let i = 0
i++
构建错误显示:
swift 一元运算符“++”不能应用于 'Int'
类型的操作数
为什么?
是的,不是最好的编译器错误。
问题是您使用 let
声明了 i
。由于整数是值类型,这意味着 i
是不可变的——一旦赋值就无法更改。
如果您将 i
声明为 var i = 0
,代码将编译。
您已将 i
定义为不可变 let
。请尝试 var i = 0
。
此外,如果您要在其中一种方法中更改值类型(结构或枚举)变量的值,则必须将该方法定义为变异:
mutating func modify() {
++i
}
在 Basic Operators 部分,Swift 编程语言指南指出 ++ 是有效的运算符:
“More complex examples include the logical AND operator && (as in if enteredDoorCode && passedRetinaScan) and the increment operator ++i, which is a shortcut to increase the value of i by 1.”
摘自:苹果公司“Swift 编程语言。”电子书。 https://itun.es/gb/jEUH0.l
但是,在游乐场尝试此操作时;
import UIKit
let i = 0
i++
构建错误显示:
swift 一元运算符“++”不能应用于 'Int'
类型的操作数为什么?
是的,不是最好的编译器错误。
问题是您使用 let
声明了 i
。由于整数是值类型,这意味着 i
是不可变的——一旦赋值就无法更改。
如果您将 i
声明为 var i = 0
,代码将编译。
您已将 i
定义为不可变 let
。请尝试 var i = 0
。
此外,如果您要在其中一种方法中更改值类型(结构或枚举)变量的值,则必须将该方法定义为变异:
mutating func modify() {
++i
}