私は、古いバージョンの API との下位互換性を維持したい小さなライブラリを作成していますが、可能な場合は最新の API の機能を使用します。
たとえば、外部 API を使用するプロジェクトがあり、これを FooFoo_v1 と呼びます。
最初、私のコードは次のようになりました。
// in Widget.scala
val f = new Foo
f.bar
その後、Foo は API の新しいバージョンである FooFoo_v2 をリリースし、bat
メソッドを追加しました。新しいバージョンに対してコンパイルしている限り、これは正常に機能します。
// in Widget.scala
val f = new Foo
f.bar
f.bat
しかし、FooFoo_v1 に対してビルドしようとすると、ビルドは明らかに失敗します。このbat
機能は完全にオプションであるため、人々が FooFoo_v1 または FooFoo_v2 に対して私のコードをビルドできるようにしたいと考えています。
依存関係管理の詳細を無視して、このようなものに対する適切な高レベルのアプローチは何ですか? 私の目標は、できるだけシンプルに保つことです。