首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin观察者lambda语法?

Kotlin观察者lambda语法?
EN

Stack Overflow用户
提问于 2021-06-03 17:46:58
回答 2查看 81关注 0票数 2

我正在学习来自.NET C#的用于Android开发的Kotlin。我有一个关于Kotlin语法的问题,例如:

代码语言:javascript
运行
复制
 val nameObserver = Observer<String> { newName ->

            nameTextView.text = newName
  }

这段代码取自Android LiveData文档。我认为观察者是一个新对象,没有new关键字,因为它在Kotlin中不存在。我的问题是lambda部分。这是在对象中初始化的属性吗?我如何知道哪个属性是初始化的而不命名它们,它们是按顺序排列的吗?在这个上下文中,newName应该是什么,是nameObserver值还是其他值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-03 17:54:57

您发布的代码片段称为SAM conversion。通过将接口类型Observer<String>指定为λ表达式,可以创建该接口类型的对象。

在您的特定情况下,newName是传递给onChanged method的参数,并且由于代码将其定义为Observer<String>,因此它的类型为String

票数 4
EN

Stack Overflow用户

发布于 2021-06-03 18:12:06

这是SAM conversion.的语法,之所以可以这样做是因为观察者java接口只声明了一个方法。

您可以使用Kotlin 1.4+中的this syntax对Kotlin接口执行此操作

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67819170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档