在kotlin中扩展lambdas是否合适?

mol*_*mol 7 lambda kotlin

我在kotlin编程方面比较新,最近我发现这是一个有效的陈述:

class Test : (Int) -> String {
    override fun invoke(p1: Int): String {
        return p1.toString()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我看到它时,我感觉扩展Lambdas可能不是一个很好的编程实践,但是我没有任何客观的理由这么认为.我没有找到关于这个问题的任何文档,所以你能告诉我们扩展lambdas是好还是坏.

hot*_*key 5

像这样的函数类型(Int) -> String在技​​术上是接口(如本详细规范文档中所述),因此,如果您觉得有必要在您的类中实现它们,那么没有什么可以阻止您这样做的。

如果这样做,您将可以在需要使用类(Int) -> StringInt.() -> String函数的情况下使用类的实例。

如果仅需要使用函数语法调用类的实例,而又不将它们用作函数类型的实例,则只需将invoke(...)运算符定义为成员或扩展函数就足够了。