Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据不同版本的外部API构建Scala_Scala_Dependencies - Fatal编程技术网

根据不同版本的外部API构建Scala

根据不同版本的外部API构建Scala,scala,dependencies,Scala,Dependencies,我正在编写一个小的库,我希望它能够向后兼容旧版本的API,同时尽可能使用最新API的功能 例如,我有一个使用外部API的项目,我将其称为fooo_v1 最初,我的代码如下所示: //在Widget.scala中 val f=新的Foo f、 酒吧 此后,Foo发布了新版本的API FooFoo_v2,其中添加了bat方法。只要我针对新版本进行编译,这就可以了: //在Widget.scala中 val f=新的Foo f、 酒吧 f、 球棒 但是,如果您试图针对fooo_v1构建,构建显然

我正在编写一个小的库,我希望它能够向后兼容旧版本的API,同时尽可能使用最新API的功能

例如,我有一个使用外部API的项目,我将其称为fooo_v1

最初,我的代码如下所示:

//在Widget.scala中
val f=新的Foo
f、 酒吧
此后,Foo发布了新版本的API FooFoo_v2,其中添加了
bat
方法。只要我针对新版本进行编译,这就可以了:

//在Widget.scala中
val f=新的Foo
f、 酒吧
f、 球棒
但是,如果您试图针对fooo_v1构建,构建显然会失败。因为
bat
特性是真正可选的,我希望允许人们根据fooo\u v1或fooo\u v2构建我的代码


忽略依赖关系管理的细节,对于这样的事情,什么是正确的高层方法?我的目标是使它尽可能简单。

我只需将项目的各个分支保存在一个存储库中(一个足够强大的存储库,允许您编辑一个分支并轻松地将其合并到其他分支中——git将是我的首选)


如果您必须在运行时进行选择,那么您只能对任何新方法使用反射。

我认为您应该将库分为两部分-一部分使用来自FooFoo_v1的功能,另一部分取决于第一部分和FooFoo_v2,并使用来自FooFoo_v2的功能。如何实现它取决于您的代码。。。如果太难,最好遵循@rex kerr的建议——维持两个分支机构