当前位置: 首页 > 知识库问答 >
问题:

静态编程语言方法参考代替lambda

贝浩歌
2023-03-14

考虑以下代码,我们获取列表的块,加入它们并打印到标准输出:

val l = listOf("1", "2", "3", "4", "5", "6", "7")
l.chunked(3, { a -> a.joinToString()}).forEach(::println)

代码工作正常。我想更改lambda调用({a-

l.chunked(3, l::joinToString).forEach(::println)

使用方法引用的代码未编译,给出的错误为:

错误:(4,7)Kotlin:类型推断失败:fun Iterable。分块(大小:Int,转换:(列表)-

错误:(4,18)Kotlin:类型不匹配:推断的类型为KFunction6

错误:(4,21)Kotlin:类型推断失败:fun Iterable。joinToString(分隔符:CharSequence=…,前缀:CharSequence=…,后缀:CharSequence=…,限制:Int=…,截断:CharSequence=…,转换:((T)-

有没有办法用方法引用而不是lambda调用来编译代码?我开始学习Kotlin,但假设错误源于这样一个事实,即joinToString使用了许多默认参数?


共有1个答案

彭展
2023-03-14

Kotlin issue tracker中有一个开放的特性请求,标题为“支持与其他函数类型一样具有默认值的函数引用”,这似乎是您的用例所缺少的。

该功能当前的目标版本为1.3。

更新1.3静态编程语言版本不包含此功能,目标版本更新为1.4

 类似资料:
  • 我有一个使用Kotlin 1.0版的Android项目。Android Studio中的0-beta-1038。 我可以在不同的部分使用Kotlin运行它,它在模拟器中编译并工作,但当我尝试使用ReadWriteProperty时,它会给出以下错误消息: 未解析的引用:ReadWriteProperty 类称为首选Utils.kt: build.grade(模块:app) build.grade(

  • 我是新来的kotlin,我已经转换了一些代码从java,但似乎有什么问题, the R in findViewById(R.id.my_id)突出显示为红色,它显示此消息:"未解决的引用: R"...我一直在寻找一个解决方案,但我似乎不明白,那么我该怎么办?这是一张截图:

  • 我正在尝试使用Exposed on Kotlin编写CRUD服务。我有一张多对一的参考表。当我尝试插入时,我得到 Java语言lang.IllegalStateException:上下文中没有事务。 这是表和实体 下面是用于创建的服务方法 保存实体后调用toContact()方法时引发错误 var contact=contactEntity。toContact() 创建此类实体的正确方法是什么?

  • 我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。 我无法获得正确的Java代码 Kotlin班是这样的 我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 在Kotlin中,我覆盖了这两个Google登录功能: 检查与谷歌的连接是否失败。 问题是,有时当我关闭包含用户帐户的对话框时,该对话框会在活动启动时弹出 像这样: 我得到了一个带有以下logcat的<code>IllegalArgumentException</code> E/AndroidRuntime:致命异常:主进程:com.dancam.subscriptions,PID:6346 Ja