match表达式
// 正则匹配 val pattern = "([0-9]+) ([a-z]+)".r; "741258933 hadoop" match { case pattern(num,item) => println(num+":"+item) }
输出结果:741258933:hadoop
数组匹配
def match_array(arr:Any) = arr match{ case Array(0) => println("Array:0" ) case Array(x,y) => println("Array:x="+x+",y="+y ) case Array(0,_*) => println("Array:..." ) case _ => println("something else" ) } match_array(Array(0)) match_array(Array(0,1)) match_array(Array(0,1,2,3,4,5)) match_array(Array("one","two","three"))
输出结果:
Array:0
Array:x=0,y=1
Array:...
somethingelse
case class匹配
Scala的case class使得对对象进行模式匹配变得非常方便,简单的来说,Scala的case class就是在普通的类定义前加case这个关键字,然后你可以对这些类来模式匹配。
abstract class Person case class Student(age:Int) extends Person case class Worker(age:Int,salary:Double) extends Person case object Shared extends Person /** * 1、声明case class 每个成员都会默认生成val,如age:Int * 2、每个case class 都会有伴生对象,每个伴生对象都会有自己case class的具体对象 * 3、模式匹配的时候,可以从case class提取内容,提取方法从apply中。 */ object case_class_object { def main(args: Array[String]): Unit = { def caseOps(person:Person) = person match{ case Student(age) => println("I am " + age + " years old"); case Worker(_,salary) => println("Wow,I got "+salary) case Shared => println("no property..."); } caseOps(Student(19)) caseOps(Worker(19,4000)) caseOps(Shared) val worker = Worker(29,3000); val worker2 = worker.copy(salary = 5000); val worker3 = worker.copy(age = 31); } }
输出结果:
Iam 19 years old
Wow,Igot 4000.0
noproperty...
相关推荐
Scala 专题教程 - Case Class和模式匹配-内含源码以及设计说明书(可以自己运行复现).zip
1. 样例类 case class 和模式匹配 pattern matching 是一组孪生语法,它们为我们编写规则的、 1. 样例类是 Scala 用于对象模
自定义类的位置子模式匹配。 要求 Python 3.8或更高版本。 注意:该程序包本身不需要Python 3.10,但是它的用法仅对Python 3.10中引入的新模式匹配功能有意义。 安装 pip install posmatch 用法 例子1 使用pos_...
scala可以使用模式匹配来匹配样例类,从而可以快速获取样例类中的成员数据。后续,我们在开发Akka案例时,还会用到。 示例 需求说明 创建两个样例类Customer、Order Customer包含姓名、年龄字段 Order包含id字段 ...
JavaScript中有一个模式匹配建议,但是即使使用模式匹配,您也可能会尝试以不适合JavaScript的方式来处理错误分配。 请看以下示例: class UserNotFoundError extends Error { }class PermissionDeniedError ...
于是我们可以发挥想象的地方就很多了,比如在 switch 中做 case 判断的时候,我们完全可以使用我们自定义的模式匹配方法来进行判断,有时候这会让代码变得非常简洁,具有条理。我们只需要按照需求重载 ~= 操作符就行...
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许...Scala的Case Class及其内置的模式匹配相当于函数式编程语言中常用的代数类型(Algebraic Type)。
这是基于密封类(支持模式匹配耗尽检查)的枚举的简单 40 行实现。 它使用反射,因此如果您使用它,您可能需要将libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaV到您的项目中。 对象的枚举 ...
* [abc] a, b, or c (simple class) [abc] a, b, 或 c (简单字符串) * [^abc] Any character except a, b, or c (negation) [^abc] 除了 a, b, 或 c 之外的任意字符(否定) * [a-zA-Z] a ...
}常用对称加密算法类支持密钥:64/128/256 bit(字节长度8/16/32)支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit)支持模式:CBC/ECB/OFB/CFB密文编码:base64字符串/十六进制字符串/二...
4.13 总结关于模式匹配的评价 111 4.14 本章回顾与下一章提要 111 第5章 隐式详解 112 5.1 隐式参数 112 5.2 隐式参数适用的场景 115 5.2.1 执行上下文 115 5.2.2 功能控制 115 5.2.3 限定...
第14章 模式匹配和样例类 A2 221 14.1 更好的switch 222 14.2 守卫 223 14.3 模式中的变量 223 14.4 类型模式 224 14.5 匹配数组、列表和元组 225 14.6 提取器 227 14.7 变量声明中的模式 227 14.8 for...
Select Case 语句 根据表达式的值,在若干组语句中选择一组执行。 Set 语句 将对象引用赋予变量或属性。 SetLocale 函数 设置全局区域设置,返回以前区域设置. Sgn 函数 返回表示数的符号的整数。 Sin 函数 返回...
15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess 2.什么是ASP.net中的用户控件 答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成...
Select Case 语句 根据表达式的值,在若干组语句中选择一组执行。 Set 语句 将对象引用赋予变量或属性。 Sgn 函数 返回表示数的符号的整数。 Sin 函数 返回角度的正弦值。 Source 属性 返回最早出错的对象或应用...
Select Case 语句 根据表达式的值,在若干组语句中选择一组执行。 Set 语句 将对象引用赋予变量或属性。 Sgn 函数 返回表示数的符号的整数。 Sin 函数 返回角度的正弦值。 Source 属性 返回最早出错的对象或应用...
Select Case 语句 根据表达式的值,在若干组语句中选择一组执行。 Set 语句 将对象引用赋予变量或属性。 SetLocale 函数 设置全局区域设置,返回以前区域设置. Sgn 函数 返回表示数的符号的整数。 Sin 函数 返回...
Select Case 语句 根据表达式的值,在若干组语句中选择一组执行。 Set 语句 将对象引用赋予变量或属性。 SetLocale 函数 设置全局区域设置,返回以前区域设置. Sgn 函数 返回表示数的符号的整数。 Sin 函数 返回...
21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。 22、JSP中动态...
// 用正则表达式编译链接的匹配模式。 Pattern p = Pattern.compile("*=\\s*\"?(.*?)[\"|>]", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(pageContents); ArrayList<String> linkList = new ArrayList...