Имеем структуру Point
struct Point {
let x: Int
let y: Int
}
И хотим её инициализировать таким образом
let point: Point = [13, 31]
Для этого Point должен соответствовать протоколу ExpressibleByArrayLiteral и реализовывать метод init(arrayLiteral:)
extension Point: ExpressibleByArrayLiteral {
init(arrayLiteral elements: Int...) {
guard elements.count == 2 else { fatalError() }
self.init(x: elements.first!, y: elements.last!)
}
}
После чего, комфортно используем
func print(point: Point) {
print(point)
}
print(point: [43, 34])