Перегрузка операторов в Swift?

struct Point{
	var x = 0
	var y = 0
	var z = 0
	init(_ x: Int, _ y: Int, _ z: Int){
		self.x = x
		self.y = y
		self.z = z
	}
}

let MyFirstPoint = Point(1,2,3)
let MySecondPoint = Point(2,3,4)

extension Point {
	static func + (left: Point, right: Point) -> Point {
        return Point(x: left.x + right.x, y: left.y + right.y, z: left.z + right.z)
    }
}


var ThirdPoint = MyFirstPoint + MySecondPoint


Ошибка:
Swift Ver. 3.1.1 (Release)
Platform: Linux (x86_64)
ERROR at line 19, col 21: extraneous argument labels 'x:y:z:' in call
return Point(x: left.x + right.x, y: left.y + right.y, z: left.z + right.z)
^~~~ ~~~ ~~~
  • Вопрос задан
  • 1772 просмотра
Решения вопроса 1
@iMaximus
Все работает, исправил только одну строку а именно return Point(x: left.x + right.x, y: left.y + right.y, z: left.z + right.z)

3067275ca8db46f683a3b23d5e5cde31.png

Либо можно эту строку не трогать, тогда так

aa23afeb8efc4e2ba4cbb5b0c174cc1b.png

В swift 3 Все параметры функции имеют то же имя внешнего параметра, что и внутреннее, если не указано иное.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы