我有一些 Scala 代码用于我为 JVM 和 ScalaJS 编译的库。
现在我有一个“纯”项目,在 js 和 jvm 项目中没有特殊代码,由于 intellij 集成和其他一些因素,我想保持这种状态。
但是,我确实有一小部分代码(1-2 行)需要根据我是在 JVM 还是 JS 中进行更改。我想要一种不需要更改整个项目结构的简单方法来完成此任务。
基本上我想要调用“isJS”,如果我使用 JavaScript 则返回 true,否则返回 false。
最佳答案
没有任何标准,因为它需要扩展 JVM 上可用的 API,而 Scala.js 做不到。
您可以使用一个微型 object Platform
轻松构建它,在 js/
和 jvm/
子项目中有两个不同的实现。例如对于 JS 它将是:
object Platform {
final val isJS = true
final val isJVM = false
}
当然这需要是非纯的。您还可以在一个仅提供该功能的小型库中对其进行抽象。这就是catalysts的platform
项目。例如。
如果你想保持完全的纯净和无依赖性,你必须求助于 hack:
val isJS = 1.0.toString == "1"
之所以可行,是因为在 JVM 上,1.0.toString
返回 "1.0"
,但在 JS 上它返回 "1"
。
关于scala.js - 在 Scala.JS 中是否有一个调用来获取我正在运行的平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36797685/