问题描述
由于某些原因。我无法为运算符++
和--
定义扩展运算符功能,而能够为同一运算符定义成员运算符功能。
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
object _12_IncrementAndDecrementOperatorsCantBeExtensionFunctions_Test {
private class X {
operator fun inc(): X = X()
operator fun dec(): X = X()
}
private class Y
/*Compile-time | 'operator' modifier is inapplicable on this function: receiver must be a supertype of the return type*/
private operator fun Y.inc(): Y = Y()
/*Compile-time | 'operator' modifier is inapplicable on this function: receiver must be a supertype of the return type*/
private operator fun Y.dec(): Y = Y()
}
我想念什么吗?有这种限制的原因吗?
解决方法
如果您在_12_IncrementAndDecrementOperatorsCantBeExtensionFunctions_Test
对象之外定义运算符,它将起作用:
class Y
operator fun Y.inc(): Y = Y()
operator fun Y.dec(): Y = Y()
这实际上是Kotlin中的错误:https://youtrack.jetbrains.com/issue/KT-24800