如何为null重载运算符



我想为null文本重载一个类似invoke的运算符。

例如,这样我就可以写一些类似的东西

null(1, 2)

有可能吗?

我不建议在null文本上重载任何内容,因为这会引起太多混乱,而且没有真实的用例。

然而,从技术上讲,这是可能的:

operator fun Nothing?.invoke() = "hi!"
fun main() {
println(null())  // Works, prints "hi!"
val x = null
println(x())  // Also works.
val y: String? = null
//println(y())  // compilation error
val z: String = ""
//println(z())  // also compilation error
}

它利用了null关键字具有可为null的类型Nothing?这一事实。

相关内容

  • 没有找到相关文章

最新更新