2017-03-09 9 views
1

たとえば、一般的なクラスを引数として取るメソッドがあるとします。そのジェネリックはCirceでエンコーディングできるように実装する必要がありますか?つまり、このクラスにエンコーダが定義されていることをどのように知ることができますか?クラスがCirce Jsonにエンコードできることを知る方法

def func[C: TraitIWouldLikeToKnowAbout](jsonEncodable: C) = ??? 

はありがとう

答えて

1

あなたはコンパイラがCがスコープ内の暗黙のEncoderインスタンスを持っている必要があることを知らせるために、このようなものを使用することができます:暗黙的証拠の省略形です

def func[C <: TraitIWouldLikeToKnowAbout : Encoder](jsonEncodable: C) = ??? 

タイプのパラメータEncoder[C]

def func[C <: TraitIWouldLikeToKnowAbout](jsonEncodable: C)(implicit en: Encoder[C]) = ??? 

そして、明らかに、Encoder[C]のインスタンスが、(半)自動導出を介して、または手動で宣言されてスコープ内で利用可能であることを確認する必要があります。

関連する問題