Пытаюсь понять и оценить, как работает ArrayLiteralConvertible...
struct Struct<T>: ArrayLiteralConvertible {
init(arrayLiteral elements: T...) {
for element in elements {
print(element)
}
}
}
let str: Struct<Int> = [1,2,3]
Выход:
1 2 3
Теперь я пытаюсь сделать то же самое, но на этот раз со своей собственной версией ArrayLiteralConvertible:
protocol MyALC {
typealias Element
init(arrLit elements: Self.Element...)
}
struct NewStruct<T>: MyALC {
init(arrLit elements: T...) {
for element in elements {
print(element)
}
}
}
let newStr: NewStruct<Int> = [1,2,3]
Однако это не работает!
error: cannot convert value of type '[Int]' to specified type 'NewStruct' let newStr: NewStruct = [1,2,3]
Я делаю что-то не так или для ArrayLiteralConvertible существует специальная обработка?