Tag: 运算符

如何在Kotlin的重载操作符上指定泛型?

我正在寻找超载除法运算符“/”,但希望允许指定泛型类型来指导返回值的类型。 这是一个例子: inline operator fun <reified T> MyType.div(fieldName: String): T { val value = someFunction(fieldName) return convertToExpectedValue(value) } 不幸的是,我无法想出一个方法来明确指定泛型类型T,当它不能被推断。 我想知道是否有像以下这样的工作? val stringVal = myType /<MyType> "myField" /<String> "myStringField" 请注意,我知道这一点 myType.div<String>("blah") 作品。 我正在寻找使用运算符“/”的东西。

为什么使用双冒号(::)在Kotlin上课?

我们知道使用双冒号( :: :)来获取Kotlin中的函数(callable)引用,例如String::compareTo , "string"::compareTo 。 在Java中,我们使用SomeClass.class和someInstance.getClass()来获得类。 为什么在Kotlin中,我们使用SomeClass::class和someInstance::class而class不是函数/方法? println(String::compareTo) // output: fun kotlin.String.compareTo(kotlin.String): kotlin.Int println("string".compareTo("strong")) // output: -6 println(String::class) // output: class kotlin.String println("string".class) // compile error