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

Cab*_*bus 7 swift swift3

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

var rect = CGRect(...)
rect.offsetInPlace(dx: 15, dy: 0)
Run Code Online (Sandbox Code Playgroud)

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

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

是否删除了变异变体?剩余的功能是否会根据是否使用返回值自动变异?恕我直言,如果它们实际上已被删除,那将是一种耻辱,因为它们在进行基于代码的布局时曾经非常方便.

Car*_*lin 14

你可以制作一个兼容性.

extension CGRect {
    mutating func offsetInPlace(dx: CGFloat, dy: CGFloat) {
        self = self.offsetBy(dx: dx, dy: dy)
    }
}
Run Code Online (Sandbox Code Playgroud)


Svi*_*ana 5

似乎已经没有offsetInPlace了.请看这里的屏幕是所有可用的功能Instance Methods 在此输入图像描述