gpt4 book ai didi

scala - 为什么 Double 在 Scala.js 中用于不为 "require"Double 的属性?

转载 作者:行者123 更新时间:2023-12-02 08:13:50 25 4
gpt4 key购买 nike

我正在查看 Screen 类(包 org.scalajs.dom.raw)并注意到以下属性:

def width: Double = js.native

def availHeight: Double = js.native

def height: Double = js.native

有没有理由使用 Double 而不是 Int?我不熟悉 Scala.js 代码,但对我来说使用 Int 更有意义。

我在这里错过了什么?

最佳答案

正如@Bob Dalgleish 解释的那样,有时看起来总是整数的东西实际上可以取非整数值。

也有使用 Double 的情况,因为值可以大于 2^31。虽然是整数值,但它们超出了 Int 的范围并且必须键入为 Double(Long 是不透明的,因此不是JS 编号)。

但是,很多时候 Scala.js 外观类型(尤其是 DOM)使用 Double 只是因为它们是从 TypeScript 类型定义转换而来的,后者只有 s。 Double 是保守的近似值。在这些情况下,在验证原始规范(通常在 Web IDL 中)后,我们可以将其缩小为 Int(欢迎 PR,并附有指向 Web IDL 规范的链接)。

您提到的 Screen 属性的具体情况属于最后一类。从the original IDL可以看出,这些值被描述为“long”。在 IDL 中,a long is an integer in the range [-2^31, 2^31-1] ,这正是 Scala.js 中 Int 的范围。

关于scala - 为什么 Double 在 Scala.js 中用于不为 "require"Double 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43767013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com