我正在开发一个依赖于Scala 2.9的库,但仅限于一个小功能.我想提出与2.8兼容的版本,但我不想维护两个代码分支.由于我正在使用SBT,我希望从它的交叉编译功能中受益.
但是我不知道有没有办法提供等效的条件编译,只有在使用Scala 2.9时才包含一段代码.反身性可能是一种选择(但如何?).
编辑:我在2.9中使用的功能是新的sys包对象.
我经过反思才明白。所以如果我想得到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)
但它是如此无聊和丑陋,我想我会放弃这些功能......