返回顶部
首页 > 资讯 > 精选 >Scala模式匹配的方法
  • 301
分享到

Scala模式匹配的方法

2023-06-27 13:06:37 301人浏览 薄情痞子
摘要

这篇文章主要介绍“Scala模式匹配的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Scala模式匹配的方法”文章能帮助大家解决问题。简单匹配Scala的模式匹配最常用于match语句中。下面是

这篇文章主要介绍“Scala模式匹配的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Scala模式匹配的方法”文章能帮助大家解决问题。

Scala模式匹配的方法

简单匹配

Scala的模式匹配最常用于match语句中。下面是一个简单的整型值的匹配实例。

val colorNum = 1val colorStr = colorNum match {   case 1 => "red"   case 2 => "green"   case 3 => "yellow"   case _ => "Not Allowed"}println(colorStr)

为了测试上面代码,可以直接把上面代码放入到“/usr/local/scala/mycode/test.scala”文件中,然后,在linux系统的shell命令提示符状态下执行下面命令:

scala test.scala

Shell 命令

另外,在模式匹配的case语句中,还可以使用变量。

val colorNum = 4val colorStr = colorNum match {   case 1 => "red"   case 2 => "green"   case 3 => "yellow"   case unexpected => unexpected + " is Not Allowed"  }println(colorStr)

按照前面给出的方法,在test.scala文件中测试执行上述代码后会在屏幕上输出:

4 is Not Allowed

也就是说,当colorNum=4时,值4会被传递给unexpected变量。

类型模式

Scala可以对表达式的类型进行匹配。

for (elem "spark","hadoop",'Hello)){   val str  = elem match{       case i: Int => i + " is an int value."       case d: Double => d + " is a double value."       case "Spark"=> "Spark is found."       case s: String => s + " is a string value."       case _ => "This is an unexpected value."   }println(str)    }

在test.scala文件中测试执行上述代码后会在屏幕上输出:

9 is an int value.12.3 is a double value.Spark is found.Hadoop is a string value.This is an unexpected value.

“守卫(guard)”语句

可以在模式匹配中添加一些必要的处理逻辑。

for (elem case _ if (elem %2 == 0) => println(elem + " is even.")           case _ => println(elem + " is odd.")   }}

上面代码中if后面条件表达式的圆括号可以不要。执行上述代码后可以得到以下输出结果:

1 is odd.2 is even.3 is odd.4 is even.

for表达式中的模式

我们之前在介绍“映射”的时候,实际上就已经接触过了for表达式中的模式。 还是以我们之前举过的映射为例子,我们创建的映射如下:

val university = Map("XMU" -> "Xiamen University", "THU" -> "Tsinghua University","PKU"->"Peking University")

循环遍历映射的基本格式是:

for ((k,v)

对于遍历过程得到的每个值,都会被绑定到k和v两个变量上,也就是说,映射中的“键”被绑定到变量k上,映射中的“值”被绑定到变量v上。

下面给出此前已经介绍过的实例:

for ((k,v) printf("Code is : %s and name is: %s\n",k,v)

上面代码执行结果如下:

Code is : XMU and name is: Xiamen UniversityCode is : THU and name is: Tsinghua UniversityCode is : PKU and name is: Peking University

case类的匹配

case类是一种特殊的类,它们经过优化以被用于模式匹配。

case class Car(brand: String, price: Int)val myBYDCar = new Car("BYD", 89000)val myBMWCar = new Car("BMW", 1200000)val myBenzCar = new Car("Benz", 1500000)for (car case Car("BYD", 89000) => println("Hello, BYD!")       case Car("BMW", 1200000) => println("Hello, BMW!")       case Car(brand, price) => println("Brand:"+ brand +", Price:"+price+", do you want it?")           }}

把上述代码放入test.scala文件中,运行“scala test.scala”命令执行后可以得到如下结果:

Hello, BYD!Hello, BMW!Brand: Benz, Price:1500000, do you want it?

Option类型

标准类库中的Option类型用case类来表示那种可能存在、也可能不存在的值。 一般而言,对于每种语言来说,都会有一个关键字来表示一个对象引用的是“无”,在Java中使用的是null。Scala融合了函数式编程风格,因此,当预计到变量或者函数返回值可能不会引用任何值的时候,建议你使用Option类型。Option类包含一个子类Some,当存在可以被引用的值的时候,就可以使用Some来包含这个值,例如Some(“Hadoop”)。而None则被声明为一个对象,而不是一个类,表示没有值。 下面们给出一个实例。

//首先我们创建一个映射scala> val books=Map("hadoop"->5,"spark"->10,"HBase"->7)books: scala.collection.immutable.Map[String,Int] = Map(hadoop -> 5, spark -> 10, hbase -> 7) //下面我们从映射中取出键为"hadoop"对应的值,这个键是存在的,可以取到值,并且取到的值会被包含在Some中返回scala> books.get("hadoop")res0: Option[Int] = Some(5) //下面我们从映射中取出键为"Hive"对应的值,这个键是不存在的,所以取到的值是None对象scala> books.get("hive")res1: Option[Int] = None

scala

Option类型还提供了getOrElse方法,这个方法在这个Option是Some的实例时返回对应的值,而在是None的实例时返回传入的参数。例如:

scala> val sales=books.get("hive")sales: Option[Int] = None scala> sales.getOrElse("No Such Book")res3: Any = No Such Book scala> println(sales.getOrElse("No Such Book"))No Such Book

scala

可以看出,当我们采用getOrElse方法时,如果我们取的”hive”没有对应的值,我们就可以显示我们指定的“No Such Book”,而不是显示None。 在Scala中,使用Option的情形是非常频繁的。在Scala里,经常会用到Option[T]类型,其中的T可以是Sting或Int或其他各种数据类型。Option[T]实际上就是一个容器,我们可以把它看做是一个集合,只不过这个集合中要么只包含一个元素(被包装在Some中返回),要么就不存在元素(返回None)。既然是一个集合,我们当然可以对它使用map、foreach或者filter等方法。比如:

scala> books.get("hive").foreach(println)

scala

可以发现,上述代码执行后,屏幕上什么都没有显示,因为,foreach遍历遇到None的时候,什么也不做,自然不会执行println操作。

关于“Scala模式匹配的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Scala模式匹配的方法

本文链接: https://lsjlt.com/news/310771.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Scala模式匹配的方法
    这篇文章主要介绍“Scala模式匹配的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Scala模式匹配的方法”文章能帮助大家解决问题。简单匹配Scala的模式匹配最常用于match语句中。下面是...
    99+
    2023-06-27
  • Scala中的模式匹配是什么
    这篇文章主要介绍Scala中的模式匹配是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性,Sca...
    99+
    2023-06-27
  • scala 调用 java 方法参数匹配问题
    scala调用java的FastJson时发生了一个方法参数匹配问题: scala和java几乎没有区别,可以互相调用。注意这里说的是几乎,总有那么少数,出人意料的惊喜在告诉你,scala就是scala。 ...
    99+
    2023-06-03
  • SqlServer2016模糊匹配的方式有哪些
    这篇文章主要介绍SqlServer2016模糊匹配的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:数据库是Sqlserver 2016版现在业务需求是:要查询出企...
    99+
    2024-04-02
  • PostgreSQL模式匹配与正则表达式方法总结
    目录1.1 PostgreSQL中的模式匹配和正则表达式1.2 传统SQL的LIKE操作符1.3 SIMILAR TO正则表达式1.4 POSIX正则表达式1.5 模式匹配函数substring总结1.1 Postgre...
    99+
    2022-11-19
    postgresql模式匹配 postgresql正则表达式 pg正则
  • C#8.0中的模式匹配
    C# 8.0中的模式匹配相对C# 7.0来说有了进一步的增强,对于如下类: class Point { public int X { get; } public in...
    99+
    2024-04-02
  • 【Java】BF算法(串模式匹配算法)
    ☀️ 什么是BF算法 BF算法,即暴力算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个与模式串T的第一个字符串进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比...
    99+
    2023-09-10
    java 算法 开发语言
  • MySQL 5.5 模式匹配LIKE
    mysql> select * from t_test; +--------+-------------+---------+ | deptno | dname    ...
    99+
    2024-04-02
  • opencv C++模板匹配的实现方法
    这篇文章主要介绍“opencv C++模板匹配的实现方法”,在日常操作中,相信很多人在opencv C++模板匹配的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”opencv&nb...
    99+
    2023-06-29
  • elasticsearch模糊匹配的方法是什么
    在Elasticsearch中,可以使用模糊匹配实现模糊搜索。以下是几种常用的模糊匹配方法:1. 通配符查询(Wildcard Qu...
    99+
    2023-10-11
    elasticsearch
  • 掌握 JavaScript RegExp 方法:提升你的模式匹配游戏
    正则表达式 (RegExp) 是 JavaScript 中用于模式匹配的强大工具。它使你能够高效地查找、替换和验证字符串中的文本。通过掌握 RegExp 方法,你可以提升你的模式匹配游戏,解开字符串操作的无限潜力。 RegExp 构造函数...
    99+
    2024-03-09
    JavaScript、RegExp、模式匹配、正则表达式、字符串操作
  • Python实现字符串模糊匹配方式
    目录Python字符串模糊匹配包含四个参数python-re模块,模糊匹配Python字符串模糊匹配 Python的difflib库中get_close_matches方法 包含四个...
    99+
    2024-04-02
  • 匹配重复模式的正则表达式
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《匹配重复模式的正则表达式》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!问题内容我有以...
    99+
    2024-04-04
  • C# 模式匹配完全指南
    目录前言模式匹配实例:表达式计算器常数表达式参数表达式一元表达式二元表达式三元表达式表达式判等常数表达式参数表达式一元表达式二元表达式三元表达式一些工具方法测试活动模式后记前言 自从...
    99+
    2024-04-02
  • Javascala模式匹配机制详解
    目录模式匹配使用类型匹配进行异常处理使用样例进行模式匹配模式匹配 Scala有一个十分强大的模式匹配机制,可以应用在很多场合:switch语句、类型查询,以及“析构&rd...
    99+
    2023-02-01
    Java scala模式匹配 Java scala模式匹配机制 Java scala
  • Rust模式匹配示例详解
    目录函数斐波那契数列函数小结函数 今天学习的内容是 Rust 中的函数。 函数,和 if 条件控制,while、loop、for 循环控制,在底层都是使用跳转实现的,所以函数也属于流...
    99+
    2022-11-13
    Rust 模式匹配 Rust 模式
  • PHP用模式匹配文件名
    ...
    99+
    2024-04-02
  • mongodb数字模糊匹配的方法是什么
    在MongoDB中,可以使用正则表达式来实现数字模糊匹配。例如,假设有一个集合存储了一些文档,其中一个字段是数字类型。现在我们想要模...
    99+
    2023-08-23
    mongodb
  • JavaScala之模式匹配与隐式转换
    目录模式匹配:基础语法如下:模式守卫:类型匹配:对象匹配样例类:偏函数:偏函数的化简写法:偏函数的使用:隐式转换:官方定义:个人理解:隐式函数:隐式转换的步骤:隐式参数:参数对比样例...
    99+
    2023-05-18
    Java Scala模式匹配 Scala隐式转换
  • Java 21 新特性:switch的模式匹配
    在之前的Java 17新特性中,我们介绍过关于JEP 406: switch的模式匹配,但当时还只是关于此内容的首个预览版本。之后在JDK 18、JDK 19、JDK 20中又都进行了更新和完善。如今...
    99+
    2023-09-26
    Java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作