gpt4 book ai didi

scala - 如何解决 2.8.0 中的 Scala 源代码不兼容问题?

转载 作者:行者123 更新时间:2023-12-02 02:35:13 24 4
gpt4 key购买 nike

在某些情况下,源代码与 Scala 2.8.0 不兼容。例如,创建一个匿名的 Seq 曾经需要定义抽象的 def elements : Iterator[A],现在称为 def iterator : Iterator[A].

对我来说,“蛮力”解决方案是创建两个与不同主要 Scala 版本一致的分支。

是否有通用的技术可以让这样的代码在两个系统下都能编译?

// Note: this code resembles techniques used by xml.NodeSeq
trait FooSeq extends Seq[ Foo ] {
def internal : Seq[ Foo ]
def elements = internal.elements
def iterator = internal.iterator // Only compiles in 2.8
// need to remove for 2.7.X
}

最佳答案

在少数情况下,用法完全不同,您必须进行更改。但在几乎所有情况下——例如上面的元素代码——2.7 风格只是在 2.8 中被弃用,而不是完全消失。如果您不介意给 2.8 用户留下弃用警告(编辑:如果他们编译您的代码,否则您只会收到警告),只需根据旧功能实现新功能:

def iterator = internal.elements

否则,我会推荐您所谓的蛮力解决方案。使用足够聪明的 VCS,这样您实际上不必两次编写太多代码(Git、Bazaar、Mercurial)和分支。

关于scala - 如何解决 2.8.0 中的 Scala 源代码不兼容问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com