正如文档中所说,kotlin 1.2 中没有 kotlin.Math 类

Posted

技术标签:

【中文标题】正如文档中所说,kotlin 1.2 中没有 kotlin.Math 类【英文标题】:No kotlin.Math class in kotlin 1.2 as it is said in the documentation 【发布时间】:2019-01-03 01:12:45 【问题描述】:

我最近一直在处理 kotlin 多平台,我完全理解开发的本质。最初,我有自己预期的数学类(在一个公共模块中),并且在 JS 和 JVM 环境中有实际的类。

由于我喜欢阅读文档,我发现从 kotlin 1.2 开始,Math 库已添加到标准库中。这给我带来了麻烦,因为我正在使用 kotlin 1.2.51,并且在我的公共模块和我的任何平台特定模块中尝试从 kotlin.Math 访问该类时遇到错误。

我没有得到什么?如何访问我的公共模块中的 kotlin.Math 类?

【问题讨论】:

【参考方案1】:

Math-class 已弃用,deprecated-message 包含:

改用 kotlin.math 包中的***函数。

(另见https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-math/index.html

所以不知何故,@mTak 的答案是正确的,即使没有提到,你应该使用kotlin.math.*-import 而不是你的Math-class。

或者,您也可以导入kotlin.math.max等,具体取决于您实际需要的功能。

我想得越多:我不知道 Kotlin 的 jvm-variant 中是否有一个 Math-class(找不到任何关于它的东西),所以在一个多平台项目中 @987654327 @-class-access 可能应该总是失败。

【讨论】:

什么意思没有提到 你写了“像这样导入它:import kotlin.math.*,但那里没有Math-class。它缺少Math-class 应该替换为方法的信息- 直接在kotlin.math中访问,JS和JVM都可以使用。 你对所有额外信息都是正确的,但由于没有数学课,我建议唯一存在的其他选择 没关系(我没有对你投反对票)。但是你知道那里没有Math-class。 OP可能不知道。您可以添加该信息,否则您的 "import it" 可能会被误解为:您的课程在该包中。 无论如何我认为这不会被误解,因为这是 Kotlin 提供的【参考方案2】:

像这样导入它:import kotlin.math.*

【讨论】:

有什么问题需要注意吗? 如果它不存在我怎么能导入它? 这不是数学。它是kotlin.math。如果您使用的是 Kotlin 1.2.51 它就在那里 在 kotlin 通用模块中可用吗?如果是这样,那么我的 kotlin 标准库可能有问题 你用的是哪个IDE?【参考方案3】:

在 Kotlin 标准库中,数学函数在 kotlin.math 包中作为***函数提供。

因此,您需要导入该包,然后才能使用其中的函数,例如sinsqrt 等。

import kotlin.math.*

val sqrt2 = sqrt(2.0)

您也可以一一导入函数,例如import kotlin.math.sqrt 甚至称他们为完全合格的val result = kotlin.math.sqrt(2.0)

【讨论】:

kotlin.math 在通用模块中不可用 应该是。检查对 kotlin-stdlib-common 库的依赖关系。如果它在那里并且您仍然看不到kotlin.math,请在此处报告问题:kotl.in/issue @andylamax 如果您在公共模块中编写上面给出的代码示例,您是否有任何错误报告?【参考方案4】:

过了一会儿(我什至觉得自己很愚蠢)。发现kotlin常用模块中的kotlin.math库已经添加了。唯一的区别是,它没有“数学”。就像我平时习惯的那样。

所以,Math.round(x: Float) 只是 round(x: Float) Math.sin(x: Float) 只是 sin(x: Float)

【讨论】:

以上是关于正如文档中所说,kotlin 1.2 中没有 kotlin.Math 类的主要内容,如果未能解决你的问题,请参考以下文章

官方文档Kotlin 1.2 的新增特性

Kotlin学习总结——空安全和集合

Recyclerview 未显示来自 Firebase Kotlin 的数据

Cordova Sqlite 插件没有像文档中所说的那样添加扩展名 .db?

Hello,Kotlin

Kotlin 1.2 新特性