2
これは、型を制限することなく契約を定義するためにScalaで使用することを検討しているパターンですが、流暢なAPIはすべて冗長な意味を持たずに残しています[..]。Scalaの型クラスAPI
アイデアはそうのような型クラスの上に暗黙のクラスを構築することです:
val sum = n1.add(n2)
の代わりに::
あなたがすることができる範囲で右暗黙で今implicit class NumberLikeApi[N : NumberLike](n: N)
def add(n2: N): N = implicitely[NumberLike[N]].add(n, n2)
}
val sum = implicitly[NumberLike[N]].add(n1, n2)
私の質問:暗黙のクラス部分を自動化/生成することはどういうわけかできますか?これは基本的に型クラスの複製です。
言語&標準ライブラリで何かを見つけることができませんでした。おそらくこれを行うことができるライブラリのどこかにマクロがありますか?
のようにそれを使用することができます。何とか私の検索の試みでそれを見つけることができませんでした。多くのおかげで、これはパターンをいくらか利用可能にします。 –