无法为增量和减量运算符定义运算符扩展函数
Unable To Define An Operator Extension Function For The Increment and Decrement Operators
出于某种原因。我无法为运算符 ++
和 --
定义扩展运算符函数,同时能够为相同运算符定义成员运算符函数。
@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
出于某种原因。我无法为运算符 ++
和 --
定义扩展运算符函数,同时能够为相同运算符定义成员运算符函数。
@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