Kotlin:方法参考不起作用?

Jir*_*ire 12 kotlin

看来我无法在Kotlin中使用对象的方法引用.此功能存在于Java中.

例如,在Java中,如果我循环遍历字符串以将每个字符附加到writer:

string.forEach(writer::append);

但在Kotlin使用相同的语法不起作用,因为:

在此输入图像描述

And*_*lav 21

目前,Kotlin仅支持对顶级和本地函数以及成员的引用,而不支持对单个实例的引用.请参阅此处的文档.

所以,你可以说Writer::append并获得一个函数Writer.(Char) -> Writer,但目前不支持获取writer实例并说writer::append要获取函数(Char) -> Writer.

  • 谢谢!是否计划在将来的Kotlin版本中添加该功能? (2认同)

Ily*_*lya 5

从 Kotlin 1.1 开始writer::append是一个完全有效的绑定可调用引用

但是,您仍然无法编写,string.forEach(writer::append)因为Writer#append方法返回一个Writer实例并forEach期望一个返回Unit.