私は頻繁にSparkを扱います。コンパイラが型がシリアライザ可能であることが保証されていれば、時間が大幅に節約できます。コンパイル時に型がシリアライザブルであることを保証する方法はありますか?
おそらくタイプクラスですか?
def foo[T: IsSerializable](t: T) = {
// do stuff requiring T to be serializable
}
T <:シリアライズ可能ではありません。それは実行時に失敗する可能性があります。単体テストは良い代用品ですが、特に大きなチームと一緒に作業する場合は、それらを忘れることがあります。
これは、コンパイル時にタイプがシールされていないと、おそらく不可能だと思います。
サイド質問:T <:シリアライズ可能なのはコンパイル時の保証のみですか? – Samar
あなたは精緻化できますか?はい、コンパイル時にチェックされる制約です。 – Upio
しかし、ランタイム保証を提供していない場合、強力な型システムを持つことのポイントは何ですか? – Samar