Kotlinでダックタイピング(暗黙インターフェイス)ジェネリックスを指定するにはどうすればよいですか?
// Not valid Kotlin code.
fun <T : Summable> myFunction ...
T : Summable
任意のタイプT
を意味する、すなわち、定義.plus
方法を有し、+
オペレータをサポートします。
Kotlinでダックタイピング(暗黙インターフェイス)ジェネリックスを指定するにはどうすればよいですか?
// Not valid Kotlin code.
fun <T : Summable> myFunction ...
T : Summable
任意のタイプT
を意味する、すなわち、定義.plus
方法を有し、+
オペレータをサポートします。
Kotlinにはこのような機能はなく、現時点では今後のリリース予定はありません。
GitHubのDucKtypesプロジェクトでは、「静的ダックタイピング」が可能です。例:
interface Summable { fun plus() }
object x { fun plus(){ println("plus") } }
fun myFunction(s : Summable){ s.plus() }
myFunction(x)
プロジェクトはまだかなり新しいですが、まもなくコード生成を自動化するためのgradle-pluginがあります。
可能であっても、その宣言に '.plus 'を使うのに十分な情報がありません。 '.plus'もどんなタイプを取ることができるかを指定する必要があります。 –
密接に関連しています: "[Kotlin、Numberの汎用操作](https://stackoverflow.com/q/40587118/90527)" – outis