3
上の一般的な操作:Kotlin、数
interface fun_vector2_common {
fun abs(res: Vec2, a: Vec2): Vec2 {
res.x = glm.abs(a.x)
res.y = glm.abs(a.y)
return res
}
}
は、それが実現することが可能ですジェネリックを使ってabs
としましょうか?
interface fun_vector2_common<T : Number> {
fun abs(res: Vec2t<T>, a: Vec2t<T>): Vec2t<T> {
res.x = glm.abs(a.x) // error
res.y = glm.abs(a.y) // error
return res
}
}
これに対応するglm.abs()
は、タイプに基づいて呼び出されますか?
それは期待するので、上記のコードは、明らかに、glm.abs(n: Number)
可能な重複[Kotlin内のすべての数値タイプのフロアモジュロを実装する方法?](https://stackoverflow.com/questions/38052008/how-to-implement-floor-modulo-for-every-number-type-in-kotlin) – outis
さまざまな解決策が提案されています。 Kotlinに追加される[構造型](https://youtrack.jetbrains.com/issue/KT-218)のリクエストがありますが、牽引力はないようです。かなり最近[タイプクラス](https://github.com/Kotlin/KEEP/pull/87)のKEEPが作成されました。基本的に型クラスであるが、拡張関数の拡張として発生する[拡張型](https://discuss.kotlinlang.org/t/extension-types-for-kotlin/1390/14)に関する広範な議論もある。 – outis