2016-11-14 111 views
3

是否可以像擴展功能一樣參照常規功能(請參閱here)?引用擴展功能?

我希望下面的代碼編譯,但現在::String.toSomething不明:

fun String.toSomething() = length + 1 
val some = listOf("lala", "bebebe").map(::String.toSomething) 

回答

3

在科特林引用擴展方法可以通過應用類名和方法名之間的::操作完成之前把::總是:

val function = Object::myExtensionMethod 

所以在你的情況:

fun String.toSomething() = length + 1 
val some = listOf("lala", "bebebe").map(String::toSomething) 
+0

謝謝。有用。 – plinyar

6

你的意思是這樣的嗎?

fun String.toSomething() = length + 1 
val some = listOf("lala", "bebebe").map(String::toSomething) 

只記得函數

+0

相同的合成器x適用於成員函數,如'String :: toUpperCase' –

+0

謝謝。有用。 – plinyar