我有一些Scala代码用于库,我为JVM和ScalaJS编译.
现在我有一个"纯"项目,在js和jvm项目中没有特殊代码,我想保持这种方式,因为intellij集成和其他一些因素.
但是,我确实需要根据我是在JVM还是JS中来改变一小段代码(1-2行).我想要一个简单的方法来实现这一点,这不需要我改变我的整个项目结构.
基本上我想要一个调用"isJS",如果我使用JavaScript则返回true,否则返回false.
没有任何标准,因为它需要扩展JVM上可用的API,而Scala.js无法做到这一点.
您可以轻松地用一个小小的建立它自己object Platform在两个不同的实现js/和jvm/子项目.例如对于JS,它将是:
object Platform {
final val isJS = true
final val isJVM = false
}
Run Code Online (Sandbox Code Playgroud)
当然,这需要非纯粹.您还可以在仅提供该功能的小型库中对其进行抽象.例如,这就是催化剂platform项目的作用.
如果你想保持完全纯粹而不依赖,你必须诉诸于黑客:
val isJS = 1.0.toString == "1"
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为在JVM上1.0.toString返回"1.0",但在JS上返回"1".
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |