[英]Kotlin: double colon (reflection) operator over
所以我正在使用VertX Web,試圖讓它與Kotlin一起工作。 有一個路由器,你必須說出類似的東西
val vertx = Vertx.vertx()
val server = vertx.createHttpServer()
val router = Router.router(vertx)
server.requestHandler(router::accept)
但它不起作用。 我究竟做錯了什么? 當我在Kotlin定義的類上使用它時,它表現正常。 這是故意的嗎?
無論如何,我必須像這樣手動完成
server.requestHandler{router.accept(it)}
這是一個已知的錯誤。
看到這個問題 。
解決方法是使用Lambda。 例如
class Foo {
fun doWork(work: () -> Unit) {
work()
}
}
class Bar (val text: String) {
fun printText() {
println("${text}")
}
}
val foo: Foo = Foo()
val bar: Bar = Bar("Hello Kotlin!")
foo.doWork(bar::printText) //Fails
foo.doWork({ bar.printText() }) //Is working
從技術上講,這不是一個錯誤。 我很早就問過他們是否計划在版本1中的實例上支持方法引用,並且我被告知他們很可能不會。
方法引用只能用於類和模塊,而不能用於實例。 來自Java 8,這似乎是一個大問題,但考慮到他們的lambda語法的潛在簡潔性,它實際上不是。
更新:他們計划在1.1中添加此功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.