Mencoba memahami dan menghargai cara kerja ArrayLiteralConvertible...
struct Struct<T>: ArrayLiteralConvertible {
init(arrayLiteral elements: T...) {
for element in elements {
print(element)
}
}
}
let str: Struct<Int> = [1,2,3]
Keluaran:
1 2 3
Sekarang saya mencoba melakukan hal yang sama tetapi kali ini dengan ArrayLiteralConvertible versi saya sendiri:
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]
Namun itu tidak berhasil!
error: cannot convert value of type '[Int]' to specified type 'NewStruct' let newStr: NewStruct = [1,2,3]
Apakah saya melakukan kesalahan atau ada penanganan khusus untuk ArrayLiteralConvertible?