2016-11-14 109 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