Swift
Swiftでダックタイピングのようなことをしてみる
 
Objective-Cはオブジェクトシステム部が動的型付けのように振る舞う(というかCから見るとすべてのオブジェクトがid型になる)ので、ダックタイピングし放題だった。 
しかしSwiftはかなり厳格な型付けがされたオブジェクト指向型言語なので、普通にはダックタイピングできない。 
C++の関数テンプレートのようにジェネリックな関数は作れるのだが、どんなオブジェクトでもOKというようなものまでは作れないようだ。 
親に共通のプロトコル(Javaでいうところのインターフェース、Rustでいうところのトレイトにあたる)を持たせて、構造体やクラスをプロトコル型にキャストすればそれっぽいことができる。 
ただ、全インスタンスに特定のメソッドが実装されていることが保証されている点で、本当の意味でのダックタイピングでは無い。 
 
 |