Я играю с изучением указателей в Swift.
Например, этот код начинается с массива CGPoint
, создает UnsafePointer
и затем извлекает все значения x в CGFloat
array:
import Foundation
let points = [CGPoint(x:1.2, y:3.33), CGPoint(x:1.5, y:1.21), CGPoint(x:1.48, y:3.97)]
print(points)
let ptr = UnsafePointer(points)
print(ptr)
func xValues(buffer: UnsafePointer<CGPoint>, count: Int) -> [CGFloat]? {
return UnsafeBufferPointer(start: buffer, count: count).map { $0.x }
}
let x = xValues(buffer: ptr, count: points.count)
print(x)
И ожидаемый результат:
[Foundation.CGPoint(x: 1.2, y: 3.33), Foundation.CGPoint(x: 1.5, y: 1.21), Foundation.CGPoint(x: 1.48, y: 3.97)]
0x0000556d6b818aa0
Optional([1.2, 1.5, 1.48])
Теперь я хотел бы, чтобы функция xValues возвращала UnsafePointer<CGFloat>
напрямую, вместо того, чтобы проходить через [CGFloat]
.
Как мне это сделать, возможно ли это?