ジェネリック型を拡張するときには、エクステンションの定義に型パラメータリストを提供しません。代わりに、オリジナルの型定義にある型パラメータリストをエクステンションの本体内で利用することができ、オリジナルの定義にある型パラメータを参照するために、オリジナルの型パラメータ名を使用します。
次の例では、スタックからポップせず、スタックのトップにあるアイテムを返す読み取り専用のコンピューテッドプロパティ topItem
を追加するために、ジェネリックな Stack
型を拡張しています。
extension Stack {
var topItem: Element? {
return items.isEmpty ? nil : items[items.count - 1]
}
}
topItem プロパティは、Element
型のオプショナル値を返します。スタックが空の場合には、topItem
は nil
を返します。スタックが空でない場合には、topItem
は配列 items
内の最後のアイテムを返します。
このエクステンションでは、型パラメータリストを定義していないことに注目してください。代わりに、コンピューテッドプロパティ topItem
のオプショナル型を示すために、Stack
型の既存の型パラメータ名である Element
がエクステンション内で使用されています。
あらゆる Stack
インスタンスで、トップのアイテムを削除することなくアクセスするために、コンピューテッドプロパティ topItem
を使用できるようになります。
if let topItem = stackOfStrings.topItem {
print("The top item on the stack is \(topItem).")
}
// "The top item on the stack is tres." と出力
Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.