0

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

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

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

4

4 回答 4

6

-class 已弃用,而Mathdeprecated-message 包含:

请改用 kotlin.math 包中的顶级函数。

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

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

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

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

于 2018-07-26T07:36:46.820 回答
2

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

于 2018-07-26T06:40:51.123 回答
1

在 Kotlin 标准库中,数学函数作为包中的顶级函数提供kotlin.math

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

import kotlin.math.*

val sqrt2 = sqrt(2.0)

您还可以一一导入函数,例如import kotlin.math.sqrt,甚至称它们为完全限定的val result = kotlin.math.sqrt(2.0)

于 2018-07-27T23:35:16.210 回答
1

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

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

于 2018-07-28T07:20:57.577 回答