型クラスがあるとしましょう
trait CanMeow[T] {
def meow(t:T):String
}
今、私は別の型クラスを持っています
trait IsCatEquivalent[T] {
def makeSound(t:T):String
def isAlive(t:T):Boolean
}
そして今、CanMeow 型クラスのすべての CatEquivalent メンバーを作成したいと考えています。私にできることは
implicit def catEquivalentCanMeow[T](implicit ce:IsCatEquivalent[T]) = new CanMeow[T] {
def meow(t:T) = ce.makeSound(t)
}
これはパフォーマンスにどのように影響しますか? メソッドが CanMeow[T] 型の暗黙的なパラメーターで呼び出されるたびに、新しいオブジェクトが構築されます。そうですか?そして、これはインスタンスをキャッシュする価値がないほど十分に安いのでしょうか?
その他の質問: これを行うためのより良い方法はありますか? (たとえば、それらが異なるライブラリからのものである場合、一方の型クラスを他方の型クラスに拡張することはオプションではない場合があります)