【问题标题】:Kotlin Monads and Lambda in AndroidAndroid 中的 Kotlin Monads 和 Lambda
【发布时间】:2018-09-21 20:18:24
【问题描述】:

所以我了解到,Java 8 功能(如 Lambda 或 Streams)仅适用于 Android 中的 API 级别 24+。

Kotlin 中的 lambda 和 monad 怎么样?它们是否也仅在 24 级之后可用,还是可用于任何 API 级别(自 Kotlin 引入以来)?

据我所知,由于它们在内部的处理方式非常不同,我很想知道是否是这种情况。

【问题讨论】:

  • Kotlin 支持的任何 API 级别都可以使用 lambda。
  • 所以如果我从 this answer 正确理解,我可以在 Kotlin 中为每个 API 级别使用 lambda 和 monad 吗?
  • 是的。我可以从你的个人经验中看出,他们至少可以工作到 16 岁。
  • 什么是 Kotlin monad?
  • 我的意思是像 List.map 或 List.sortedBy 这样的方法,它们只适用于 Kotlin 集合

标签: android lambda kotlin


【解决方案1】:

API 16+ 支持 Kotlin 的 lambda 和扩展函数(您称之为 monad),API 14+ 也应该支持。当 Kotlin 编译为 Java 时,它会将 lambda 转换为普通的 Java 语句(有点,如果您尝试反编译为 Java,那将是一团糟)。我不完全确定扩展函数是如何工作的,但它们也被转换了。

在任何情况下,Android Studio 都应该告诉您,如果您尝试的某些东西在某个 API 级别上不起作用。

【讨论】:

    【解决方案2】:

    任何 Android API 都支持 Java lambda。 API 24+ 支持流或功能接口等功能。

    以下是完整列表: https://developer.android.com/studio/write/java8-support

    AFAIK Android 支持 Kotlin 语言的所有功能。

    【讨论】:

    • 我的意思是,Kotlin 作为集合等的特殊类,其中集成了 monad 方法,这些在以前的级别中可用吗?
    • 问题是关于 Kotlin,而 Kotlin 流和功能接口在 24 岁以下工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多