scala 模式匹配
package scala import java.io object Demo27Match { def main(args: Array[String]): Unit = { /** * java中的模式匹配可以匹配,基本数据类型,字符串,枚举 * * scala中的模式匹配,可以匹配基本数据类型,字符串,枚举,匹配对象,匹配类型 * * 按照顺序匹配,只会匹配成功一个 * 如果前面没有匹配成功会走下划线 * */ /** * 1、匹配基本数据类型 */ val i = 100 i match { case 1 => { println("i等于1") } case 100 => println("i等于100") //如果前面没有匹配成功匹配下划线 case _ => println("默认") } /** * 2、匹配字符串 * */ val str = "java" str match { case "java" => println("java") case "scala" => println("scala") case _ => println("其它") } /** * 3、匹配对象 * */ case class User(id: String, name: String) val user: User = User("001", "张三") user match { case User("001", "张三") => println("张三") case User("002", "李四") => println("李四") case _ => println("其它") } /** * 4、匹配类型 * */ val j: Any = 100.1 j match { //这路的i 代表的是上面的j 执行类型自动做了转换 case i: Int => println("int类型" + i) case s: String => println("string类型" + s) case _ => println("其它类型" + j) } /** * 匹配成功之后可以由返回值 * */ val k = 100 val r: Int = k % 2 match { //匹配成功之后返回 case 1 => k + 1 case 0 => k * 2 } var s = 0 if (k % 2 == 1) { s = k + 1 } else { s = k * 2 } println(r) println(s) /** * 模式匹配的应用 * */ val map = Map("001" -> "张三", "002" -> "李四") val name: String = map.getOrElse("001", "默认值") /** * Option ; 由两个取值,Some None * some代表有值 * None 代表没有值 * */ val option: Option[String] = map.get("003") val value: String = option match { //如果有值返回对应的值 case Some(v) => v //如果没有值返回默认值 case None => "默认值" } val list: List[(String, Int)] = List(("001", 23), ("002", 24), ("003", 25)) list.map(kv => { val id: String = kv._1 val age: Int = kv._2 (id, age + 1) }) /** * 使用case 代替lambda 表达式 * * 需要将小括号替换成大括号 */ val list1: List[(String, Int)] = list.map { //匹配集合中的数据是否满足指定类型 case (id: String, age: Int) => (id, age + 1) } list1.foreach(println) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能