android - Kotlin Observer lambda 语法?
问题描述
我现在正在学习来自 .NET C# 的用于 Android 开发的 Kotlin。我对 Kotlin 语法有疑问,例如:
val nameObserver = Observer<String> { newName ->
nameTextView.text = newName
}
此代码取自 Android LiveData 文档。我认为 Observer 是一个新对象,没有 new 关键字,因为它在 Kotlin 中不存在。我的问题是 lambda 部分。这是在对象中初始化的属性吗?我如何知道初始化了哪些属性而不命名它们,它们是否按顺序排列?在这种情况下应该是什么 newName , nameObserver 值或其他什么?
解决方案
您发布的片段称为SAM 转换。您Observer<String>
通过将其指定为 lambda 表达式来创建接口类型的对象。
在您的特定情况下newName
是传递给onChanged 方法的参数,并且看到代码将其定义为Observer<String>
,是类型String
。
推荐阅读
- java - 如何将 3rd 方依赖项添加到游戏框架项目中
- python - 根据标题自动化 matplotlib 图形尺寸
- django - 如何将数据发布到包含复选框的 Django 表单
- javascript - 当 *ngIf 应用于表格以修复闪烁时 dataSource.sort 损坏
- powershell - Win 7 上无法识别 New-LocalUser
- ios - 使用 MPSImageConvolution 时出现异常
- python - ERR_TOO_MANY_REDIRECTS django 2.1 的问题
- python - Flask 看不到静态文件
- webrtc - 为什么我们使用 STUN 服务器?
- distance - 将海龟移动到 Netlogo 中最近的未占用区域