gpt4 book ai didi

ios - 如何在 Swift 3 的 CGFloat 扩展中使用可变变量

转载 作者:搜寻专家 更新时间:2023-11-01 07:19:06 28 4
gpt4 key购买 nike

<分区>

我目前正在将一个 fork 的框架升级到 Swift 3。

工作 Swift 2 代码:

public extension CGFloat {

var roundToNearestHalf: CGFloat {
return round(self * 2)/2
}
}

在 Swift 3 中,返回会抛出 编译器错误:无法在不可变值上使用可变成员:'self' 是不可变的

我能够找到大量文档,说明为什么 Struct 的方法需要可变。但到目前为止,我无法找到变量的解决方案。

如果我输入关键字 mutating,编译器会抛出错误:Expected declaration

public extension CGFloat {

var roundToNearestHalf: CGFloat mutating {
return round(self * 2)/2
}
}

enter image description here

我对这个问题的研究是,代码似乎放错了地方 - 所以它需要在一个函数中。

public extension CGFloat {

mutating func roundToNearestHalf() -> CGFloat {
var roundToNearestHalf: CGFloat {
return round(self * 2)/2
}
}
}

现在编译器会提示 `*``

enter image description here

关于这个问题的研究让我想到了 this线程,建议按照我正在尝试的方式使用 round 函数。

由于这段代码显然在 Swift 3 之前有效,我想知道为什么它不再有效了。为什么现在必须将 var 声明为可变的?我现在需要如何声明 var roundToNearestHalf?非常感谢您的帮助。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com