拡張は、定義したとおり、すべてのタイプの配列に適用されます。残念ながら、いずれの配列にも0
を挿入することはできません。たとえば、[String]
に0
を挿入することはできません。
この拡張機能は、整数リテラル0
を含むことができる配列でのみ動作する必要があります。
extension Array where Element: ExpressibleByIntegerLiteral {
mutating func printWithZero() -> Array
{
self.insert(0, at: 0)
return self
}
}
例:あなたはタイプがExpressibleByIntegerLiteral
であることを指定する配列のElement
種類に制約を追加することによってこれを行うことができます
var a = [1, 2, 3]
let b = a.printWithZero()
print(a) // [0, 1, 2, 3]
print(b) // [0, 1, 2, 3]
// Works with an array of Doubles too
var c = [1.5, 2.5, 3.5]
let d = c.printWithZero()
print(c) // [0, 1.5, 2.5, 3.5]
print(d) // [0, 1.5, 2.5, 3.5]