代码之家  ›  专栏  ›  技术社区  ›  Travis Griggs

Kotlin是否有类似于Swift Optional的类型?

  •  3
  • Travis Griggs  · 技术社区  · 6 年前

    Swift具有枚举类型 Optional 就在它的核心库中,这意味着您可以查看Swift如何处理选项(即 ?? 例如operator),甚至可以添加自己的扩展名。

    Kotlin的基本库中是否有类似的类型?或者Kotlin的所有可空类型都是在语言/语法/编译器级别处理的?我已经看完了 the very spartan Null Safety section of the Kotlin manual ,但未找到任何指向特定空包装器类型的提示。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Ewan Mellor    6 年前

    这个 ? 后缀相当于Swift's Optional ,但它不像Swift中的枚举,因为它不是一个一级值,所以它返回到JVM的原语 null 相反。

    您可以在可空类型上添加扩展,如下所示:

    fun <T> Collection<T>?.isNullOrEmpty(): Boolean {
        return this == null || isEmpty()
    }
    

    它和Swift不太一样,因为您需要选择一个基类(例如。 Collection<T> 但在权力上是相似的。

    您还可以访问Java8 java.util.Optional<T> 在科特林,但那只是一团糟,最好避免。

        2
  •  0
  •   comingstorm    6 年前

    默认情况下,Kotlin数据类型不可为空。通过添加问号可以使数据类型为空:

    var a: String = "Hello!"   // non-nullable
    var b: String? = null  // nullable
    

    从不可为空的值到可为空的类型的转换是自动的。还有类似Swift的空传播语法。