#swift
#swift
Вопрос:
Пожалуйста, рассмотрите следующее:
struct Entry {
let points: [CGPoint]
func squeezePoints(_ multiplier: CGFloat) -> [CGPoint]{
return points.map{$0.x * multiplier}
}
}
Код не компилируется из-за ошибки: Cannot convert value of type 'CGFloat' to closure result type 'CGPoint'
Ответ №1:
Вы пытаетесь сопоставить с CGFloat
, но объявили возвращаемый тип вашей функции как [CGPoint]
. Если вы хотите умножить координату x каждой точки, измените свою функцию, чтобы отобразить на a CGPoint
и сохранить y
неизмененным.
func squeezePoints(_ multiplier: CGFloat) -> [CGPoint]{
return points.map{CGPoint(x: $0.x * multiplier, y: $0.y)}
}
Комментарии:
1. точки уже [CGPoint], я только изменяю каждое из них по X значений.
2. @EvgeniyKleban Вы не изменяете значение X. Вы возвращаете умноженное значение X (и только значение X, а не точку).
3. почему, я сопоставляю массив с изменением одного из его значений, другое должно оставаться неизменным.
4. @EvgeniyKleban карта это не метод изменения. Вам потребуется выполнить итерацию индексов массива и изменить каждый элемент вашего массива
5. да, но я не пытаюсь изменить массив точек, а вместо этого возвращаю его с изменением одного из его значений..