gpt4 book ai didi

generics - 如何在Kotlin中的重载运算符上指定泛型类型?

转载 作者:行者123 更新时间:2023-12-02 13:24:09 24 4
gpt4 key购买 nike

我希望重载除法运算符“/”,但希望允许指定泛型来指导返回值的类型。

这是一个例子:

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 1.2)使用as:

val midVal: MyType = myType / "myField"
val stringVal: String = midVal / "myStringField"

// or with Kotlin 1.2
// I'm not 100% sure about this one actually, so take this with a grain of salt

val stringVal = ((myType / "myField") as MyType / "myStringField") as String

关于generics - 如何在Kotlin中的重载运算符上指定泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com