Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 用于'的过载\*=';它接受CGFloat_Swift - Fatal编程技术网

Swift 用于'的过载\*=';它接受CGFloat

Swift 用于'的过载\*=';它接受CGFloat,swift,Swift,我正在学习Swift,并试图做一些非常简单的应用。我遇到了一件我无法理解的事情: 当我写作时 var point = CGPoint(x: 0.6, y: 0.6) let size = CGSize(width: 15, height: 25) point.x *= size.width point.y *= size.height 编译器认为没关系。 但是如果我在扩展中写同样的内容 extension CGPoint { func scale(bySize size: CGSize

我正在学习Swift,并试图做一些非常简单的应用。我遇到了一件我无法理解的事情:

当我写作时

var point = CGPoint(x: 0.6, y: 0.6)
let size = CGSize(width: 15, height: 25)
point.x *= size.width
point.y *= size.height
编译器认为没关系。
但是如果我在扩展中写同样的内容

extension CGPoint {
    func scale(bySize size: CGSize) {
        self.x *= size.width
        self.y *= size.height
    }
}
我有一个错误,找不到接受函数中每行提供的参数的“*=”的重载

有人能解释一下这是什么意思,有什么区别吗

点和大小在两种情况下都是相同的,为什么在第一种情况下*=运算符存在,而在第二种情况下它不存在

mutating func scale(bySize size: CGSize) {
    self.x = self.x * size.width
    self.y *= size.height
}
您必须声明函数想要改变“按值”结构的状态

“结构和枚举是值类型…”

如果需要在特定方法中修改结构或枚举的属性,则可以选择该方法的变异行为。。。"

Auszug aus:Apple Inc.“快速编程语言”,iBooks

您必须声明函数想要改变“按值”结构的状态

“结构和枚举是值类型…”

如果需要在特定方法中修改结构或枚举的属性,可以选择该方法的变异行为……”

Auszug aus:Apple Inc.“快速编程语言”,iBooks

您必须声明函数想要改变“按值”结构的状态

“结构和枚举是值类型…”

如果需要在特定方法中修改结构或枚举的属性,可以选择该方法的变异行为……”

Auszug aus:Apple Inc.“快速编程语言”,iBooks

您必须声明函数想要改变“按值”结构的状态

“结构和枚举是值类型…”

如果需要在特定方法中修改结构或枚举的属性,可以选择该方法的变异行为……”


Auszug aus:Apple Inc.“Swift编程语言”iBooks.

您需要在实现中添加关键字
mutating

extension CGPoint {
    mutating func scale(bySize size: CGSize) {
        self.x *= size.width
        self.y *= size.height
    }
}
您可以在以下目录中找到:

添加了扩展的实例方法也可以修改(或变异) 实例本身。修改的结构和枚举方法 self或其属性必须将实例方法标记为mutating,仅 就像从原始实现中变异方法一样

然后,他们提供了以下示例:

extension Int {
    mutating func square() {
        self = self * self
    }
}
var someInt = 3
someInt.square()
// someInt is now 9

您需要在实现中添加关键字
mutating

extension CGPoint {
    mutating func scale(bySize size: CGSize) {
        self.x *= size.width
        self.y *= size.height
    }
}
您可以在以下目录中找到:

添加了扩展的实例方法也可以修改(或变异) 实例本身。修改的结构和枚举方法 self或其属性必须将实例方法标记为mutating,仅 就像从原始实现中变异方法一样

然后,他们提供了以下示例:

extension Int {
    mutating func square() {
        self = self * self
    }
}
var someInt = 3
someInt.square()
// someInt is now 9

您需要在实现中添加关键字
mutating

extension CGPoint {
    mutating func scale(bySize size: CGSize) {
        self.x *= size.width
        self.y *= size.height
    }
}
您可以在以下目录中找到:

添加了扩展的实例方法也可以修改(或变异) 实例本身。修改的结构和枚举方法 self或其属性必须将实例方法标记为mutating,仅 就像从原始实现中变异方法一样

然后,他们提供了以下示例:

extension Int {
    mutating func square() {
        self = self * self
    }
}
var someInt = 3
someInt.square()
// someInt is now 9

您需要在实现中添加关键字
mutating

extension CGPoint {
    mutating func scale(bySize size: CGSize) {
        self.x *= size.width
        self.y *= size.height
    }
}
您可以在以下目录中找到:

添加了扩展的实例方法也可以修改(或变异) 实例本身。修改的结构和枚举方法 self或其属性必须将实例方法标记为mutating,仅 就像从原始实现中变异方法一样

然后,他们提供了以下示例:

extension Int {
    mutating func square() {
        self = self * self
    }
}
var someInt = 3
someInt.square()
// someInt is now 9
此处也有说明-从实例方法内修改值类型此处也有说明-从实例方法内修改值类型此处也有说明-从实例方法内修改值类型此处也有说明-从实例方法内修改值类型