我想为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?
这一事实。