正如文档中所说,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
包中作为***函数提供。
因此,您需要导入该包,然后才能使用其中的函数,例如sin
、sqrt
等。
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 类的主要内容,如果未能解决你的问题,请参考以下文章
Recyclerview 未显示来自 Firebase Kotlin 的数据