Scala中的条件编译

par*_*tic 6 scala sbt

我正在开发一个依赖于Scala 2.9的库,但仅限于一个小功能.我想提出与2.8兼容的版本,但我不想维护两个代码分支.由于我正在使用SBT,我希望从它的交叉编译功能中受益.

但是我不知道有没有办法提供等效的条件编译,只有在使用Scala 2.9时才包含一段代码.反身性可能是一种选择(但如何?).

编辑:我在2.9中使用的功能是新的sys包对象.

par*_*tic 2

我经过反思才明白。所以如果我想得到sys.SystemProperties,我可以这样做:

try {
    val k = java.lang.Class.forName("scala.sys.package$")
    val m = k.getMethod( "props" )
    // etc.
} catch {
    case _ => throw new UnsupportedOperationException("Only available with Scala 2.9")
}
Run Code Online (Sandbox Code Playgroud)

但它是如此无聊和丑陋,我想我会放弃这些功能......