我在kotlin文件中定义了这个函数。
fun loadSubmissions(projectId: Long?, completion: (List<Submission>, Exception) -> Unit) { ... }
想这样从Java调用它
loadSubmissions(project.getProjectId(), (submissions, e) ->
{
updateSubmissions(submissions);
return null;
});
随着
void updateSubmissions(List<Submission> submissionList)
{ .. }
但它给了我
Error:(226, 35) error: incompatible types: List<CAP#1> cannot be
converted to List<Submission>
where CAP#1 is a fresh type-variable:
CAP#1 extends Submission from capture of ? extends Submission
我意识到lambda函数的参数似乎是< code >列表
如果我把类转换成java,我可以很容易地用lambda回调函数调用那个函数。
我做错了什么
您没有公开变量< code >提交的类型,但是错误消息显示它是< code >列表
这至少给你带来了两个问题:
更新提交 ()
时不是类型正确的,并且loadSubmissions()
的类型不兼容。要解决此问题,您需要扩大这两种方法的参数类型,或者缩小变量提交的
类型。
我想为我的游戏创建一个简单的倒计时,当游戏开始时,我想每秒调用这个函数: 我试过这个: 但应用程序不幸停止,第二次调用run函数 3周前,我刚刚开始使用android开发和静态编程语言,到目前为止,我对它了解最多。 在Xcode中使用swift时,我使用了这一行,我认为类似的东西也适用于Kotlin
动机: 在我们的Android项目中,我们有许多验证,比如
我在一个Kotlin文件中有一个名为“onitmselected”的变量 在Java文件中,我试图设置该变量,但无法找出正确的语法。 lambda表达式一直希望返回Void,但是,当我返回Void时,它就不会编译。 我尝试了各种语法,但似乎无法正确。 使用具有参数的函数设置变量的正确方法是什么?
编译时得到这个错误 意外标记(使用;分隔同一行的表达式) 柯特林 lambda 函数语法是否与 Java Lambda 表达式略有不同?
考虑以下代码,我们获取列表的块,加入它们并打印到标准输出: 代码工作正常。我想更改lambda调用(
我知道内联函数可能会提高性能 编译器可以发出以下代码,而不是为参数创建函数对象并生成调用。(来源) 但是我发现没有kotlin为一个非内联函数创建的函数对象。为什么?