scala.js - 在 Scala.JS 中是否有一个调用来获取我正在运行的平台?

标签 scala.js

我有一些 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
}

当然这需要是非纯的。您还可以在一个仅提供该功能的小型库中对其进行抽象。这就是catalystsplatform项目。例如。

如果你想保持完全的纯净和无依赖性,你必须求助于 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/

相关文章:

scala.js - 如何导出共享案例类的属性

javascript - Scala.js:对象文字,键名中有冒号

Scala.js 原生 Javascript 构造函数

javascript - 将函数导出到 scalajs 中的全局范围

html - 如何在不将绑定(bind)片段包装在 XML 文字中的情况下组合绑定(bind)片段

scala.js - 如何在使用 Binding.scala 将元素加载到 dom 后执行一些 init

javascript - 如何区分 JS 不透明对象?

node.js - 您实际上如何在 nodejs 中运行 scalajs 代码?

javascript - scalajs 作用域中的对象和 js.global 作用域中的“相同”对象有什么区别?

scala - 在调整大小之前,传单 map 不会正确显示