当前位置: 首页 > 知识库问答 >
问题:

如何在Kotlin中模式匹配Options?

屈星腾
2023-03-14

有可能写这样的东西吗,或者我们必须回到Kotlin中的手动空检查?

val meaningOfLife : String? = null

when meaningOfLife {
    exists -> println(meaningOfLife)
    else   -> println("There's no meaning")
}

共有1个答案

赫连冠玉
2023-03-14

一种可能的方法是首先匹配null,以便在else分支中将字符串?隐式转换为string:

val meaningOfLife: String? = null

when (meaningOfLife) {
    null -> println("There's no meaning")
    else -> println(meaningOfLife.toUpperCase()) //non-nullable here
}

这是编译器执行的智能强制转换的特例。

is stringelse分支也可以达到类似的效果--is string-当值不为null时,check为true。

有关空安全的更多习惯用法,请看下面的答案。

 类似资料:
  • 我在应用程序中有一个编辑文本字段,用户可以手动插入时间,我想匹配适当的日期模式,如用户可以输入这种格式的时间,只有当它不是在给定的格式,然后它显示错误。我如何才能使这个功能的模式匹配器。我不知道如何实现这个功能。有人请让我知道如何才能实现这个功能,任何帮助都将不胜感激。 谢谢

  • 一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常

  • 主机权限和 内容脚本匹配 是基于匹配模式定义的一组 URL。匹配模式本质上是一个以允许的 schema(http,https,file 或ftp 开头)的URL,并且可以包含 “*” 字符。特殊模式 < all_urls > 匹配以允许的 schema 开头的任何 URL。 每个模式包含 3 个部分: schema - 例如,http 或file 或 * 注意:对文件 URL 的访问不是自动的。用

  • MySQL提供了一个标准的SQL模式匹配,和基于扩展的正则表达式的模式匹配Unix工具(如vi,grep,sed)一样。 SQL模式匹配可以使用“_“来匹配任意单个字符,”%“可以用来匹配任意数量(包含0个字符)的字符。在MySQL中,SQL模式匹配的大小写默认是不敏感的,以下有一些例子,当你在使用SQL模式时,不要使用 = 或 <>,而是使用LIKE 或 NOT LIKE。 要找到以字符“b"开

  • 除了我们常见的控制语句之外,Rust还提供了一个更加强大的关键字——match 。但是,需要指出的一点是,match只是匹配,要发挥其全部威力,还需要模式的配合。本章,我们就将的对Rust的模式匹配进行一番探索。 本章内容: match关键字 模式 pattern

  • 模式匹配 内容脚本可以作用到模式匹配定义好的URL集合上. 你能对manifest文件的内容脚本段的部分进行一个或多个模式匹配操作. 这里描述模式匹配语法 — 当你指定内容脚本将影响哪些URL时你需要遵循的规则. 任意一个模式匹配本质上都是一个以认可的协议(例如:http, https, file, ftp 或者 chrome-extension)开头的URL,只是URL你可以包含"*"字符. 这