我最近一直在处理 kotlin 多平台,我完全理解开发的本质。最初,我有自己预期的数学类(在一个公共模块中),并且在 JS 和 JVM 环境中有实际的类。
由于我喜欢阅读文档,我发现从 kotlin 1.2 开始,Math 库已添加到标准库中。这给我带来了麻烦,因为我正在使用 kotlin 1.2.51,并且在我的公共模块和我的任何平台特定模块中尝试从 kotlin.Math 访问该类时遇到错误。
我没有得到什么?如何访问我的公共模块中的 kotlin.Math 类?
我最近一直在处理 kotlin 多平台,我完全理解开发的本质。最初,我有自己预期的数学类(在一个公共模块中),并且在 JS 和 JVM 环境中有实际的类。
由于我喜欢阅读文档,我发现从 kotlin 1.2 开始,Math 库已添加到标准库中。这给我带来了麻烦,因为我正在使用 kotlin 1.2.51,并且在我的公共模块和我的任何平台特定模块中尝试从 kotlin.Math 访问该类时遇到错误。
我没有得到什么?如何访问我的公共模块中的 kotlin.Math 类?
-class 已弃用,而Math
deprecated-message 包含:
请改用 kotlin.math 包中的顶级函数。
(另见https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-math/index.html)
所以不知何故,@mTak 的答案是正确的,即使没有提到,你应该使用kotlin.math.*
-import而不是你的Math
-class。
或者,您也可以 importkotlin.math.max
等,具体取决于您实际需要的功能。
我想得越多:我不知道Math
Kotlin 的 jvm-variant 中是否有一个 -class (找不到任何关于它的东西),所以在一个多平台项目中,Math
-class-access 可能应该总是有失败的。
像这样导入它:import kotlin.math.*
在 Kotlin 标准库中,数学函数作为包中的顶级函数提供kotlin.math
。
因此,您需要导入该包,然后您将能够使用其中的函数,例如sin
等sqrt
。
import kotlin.math.*
val sqrt2 = sqrt(2.0)
您还可以一一导入函数,例如import kotlin.math.sqrt
,甚至称它们为完全限定的val result = kotlin.math.sqrt(2.0)
过了一会儿(我什至觉得自己很愚蠢)。发现kotlin公共模块中的kotlin.math库已经添加了。唯一的区别是,它没有“数学”。像我通常习惯的那样。
所以,
Math.round(x: Float) 只是 round(x: Float)
Math.sin(x: Float) 只是 sin(x: Float)