Kotlin类扩展

Kotlin类扩展,kotlin,kotlin-extension,Kotlin,Kotlin Extension,我只是把Kotlin作为Euler项目的一个有趣的辅助项目来学习。我5分钟前才开始用IntelliJ IDEA 我有以下代码: fun Number.isMultipleOf(n: Number): Boolean { return this % n == 0 } fun main(args: Array<String>){ println(10.isMultipleOf(5)) } 我在java、Python、C++和SWIFT方面有经验,所以我认为科特林不应该

我只是把Kotlin作为Euler项目的一个有趣的辅助项目来学习。我5分钟前才开始用IntelliJ IDEA

我有以下代码:

fun Number.isMultipleOf(n: Number): Boolean {
    return this % n == 0
}

fun main(args: Array<String>){
    println(10.isMultipleOf(5))
}
我在java、Python、C++和SWIFT方面有经验,所以我认为科特林不应该是那么大的挑战。但WTF是一种“接收器类型”

如何在从
Number
类扩展中获取所需功能的同时修复此编译错误?

考虑一下,
isMultipleOf
对浮点精度问题导致的浮点和双精度运算没有那么有效

这是修改后的代码:

fun Int.isMultipleOf(n: Int): Boolean {
    return this % n == 0
}
这就是编译。

考虑一下,
isMultipleOf
对浮点精度问题导致的浮点和双精度运算没有那么有效

这是修改后的代码:

fun Int.isMultipleOf(n: Int): Boolean {
    return this % n == 0
}

这就是编译。

只是试图解释术语接收器类型和提到的错误

行中出现错误

return this % n == 0

如果仔细观察,
为变量类型数字。因此,Number是上面语句中的接收器类型(因为它接收第二个要操作的操作数)Number是所有数值对象(如Int、Float等)的抽象超类。。。在Kotlin中,它没有内联函数来执行模(%)运算。因此,您得到了错误。希望这有帮助。

只是想解释一下术语接收器类型和提到的错误

行中出现错误

return this % n == 0
如果仔细观察,
为变量类型数字。因此,Number是上面语句中的接收器类型(因为它接收第二个要操作的操作数)Number是所有数值对象(如Int、Float等)的抽象超类。。。在Kotlin中,它没有内联函数来执行模(%)运算。因此,您得到了错误。希望这有帮助