我只是切换到Swift几天,我注意到后缀和前缀++和 - 将在Swift 3中删除。我做了一些研究,根据Swift网站上的公告,运算符++ - 将被+ = 1和 - = 1替换。链接此处New Features in Swift 2.2
我有一段代码可以与旧版本的Swift一起使用。当我从原始代码return counter1++
更改为return counter1 += 1
并弹出错误
没有'+ ='候选人产生预期的上下文类型'Int'
这是我的例子
func countingCounter() -> (() -> Int){
var counter1 = 0
let incrementCounter1: () -> Int = {
return counter1+=1 //original is counter1++
}
return incrementCounter1
}
我试图解决这个问题,但仍然陷入困境。
答案 0 :(得分:18)
答案 1 :(得分:8)
不,它们不相同,++和 - 递增(或递减)并返回,+ =和 - =以简单阅读简短形式添加(或减去)金额,但它们不返回任何东西。
因此,您需要将值更改与值使用情况分开。这实际上是弃用的全部内容 - 使代码更易于阅读和维护。
答案 2 :(得分:8)
正如我在评论中所说,你现在必须编写它来替换postfix ++。另一种方法是使用中间变量,如果你不喜欢-1的东西。
let incrementCounter1: () -> Int = {
counter1+=1 //original is counter1++
return counter1-1;
}
答案 3 :(得分:1)
不,它们不相同,你必须先增加,然后返回值。这个。
func countingCounter() -> (() -> Int){
var counter1 = 0
let incrementCounter1: () -> Int = {
counter1 += 1
return counter1
}
return incrementCounter1
}
答案 4 :(得分:0)
在这里练习巫术,但没有人提到defer
-这是@Walfrat方法的一种更优雅的替代方法,您可能会喜欢它的外观。延迟会在返回值后进行递增。
let postIncrementCounter1: () -> Int = {
defer { counter1 += 1 } // original is counter1++
return counter1
}