Swift 3 变异函数缺少 ('...inPlace' 方法)

标签 swift swift3

在 Swift 2.3 中,我们可以这样写:

var rect = CGRect(...)
rect.offsetInPlace(dx: 15, dy: 0)

将一个矩形向右移动 15pt。

但是在 Swift 3 中,这个函数似乎不再存在了。 在检查 CGRect 接口(interface)时,我们只能看到非变异变体 offsetBy(dx:, dy:)。在我们通常使用变异函数的所有地方(名为 ...inPlace)也是如此。我已经在 GitHub 上搜索了 Swift evolution 存储库,但找不到任何关于此的注释。

变异变体是否已被移除?剩余的函数是否根据返回值是否被使用而自动改变?恕我直言,如果它们真的被删除了,那将是一种耻辱,因为它们曾经在进行基于代码的布局等时非常方便。

最佳答案

您可以制作一个以实现兼容性。

extension CGRect {
    mutating func offsetInPlace(dx: CGFloat, dy: CGFloat) {
        self = self.offsetBy(dx: dx, dy: dy)
    }
}

关于Swift 3 变异函数缺少 ('...inPlace' 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438362/

相关文章:

ios - 超过 1 个 UIPickerView Swift

ios - 如何不以编程方式处理某些通用链接?

ios - 数组回调

swift - 在 macOS 中将 RGB 转换为 HSV

Swift 3,自定义 "="等于运算符 ? (不相等, "==")

ios - NSFastEnumerationIteration.member Swift 3

ios - 带有自定义色调的 searchController.searchBar 上方和下方的黑线

swift - 单元格中的完成处理程序

ios - XCUIApplication 上的 swipeUp() 破坏了 UITest 中的 XCUIApplication

swift - 为什么 'if let' 似乎不像以前在 Xcode 8.3 beta 中的 Swift 3 中拆箱值?