我正在编写一个小型库,我希望它与旧版本的 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 构建我的代码。
忽略依赖管理的细节,对于这样的事情,正确的高级方法是什么?我的目标是让它尽可能简单。