scala中的case语法与java中的switch语法类似,但比switch更强大:
例子一正则匹配:
val Pattern="(s.*)".r
val v1="spark";
val r=v1 match {
case Pattern(v1)=> "begin s*"
case "1"=> "1"
case "2"=> "2"
case _=> "default"
}
println(r) // begin s*
例子二等值匹配:
val v1=1
val r=v1 match {
case 1=> "1"
case 2=> "1"
case 3=> "2"
case _=> "default"
}
println(r)// 1
例子三范围匹配:
val v1=3
val r=v1 match {
case v1 if 1 until 5 contains v1=> "1-5"
case v1 if 5 until 10 contains v1=> "5-10"
case _=> "not found"
}
println(r)//1-5
变形语法:
val v1=3
val r=v1 match {
case v1 if (v1>0 && v1<=5) => "1-5"
case v1 if (v1>5 && v1<=10)=> "5-10"
case _=> "not found"
}
println(r)
例子四多值匹配:
def glob(x:Any):Any= x match {
case 1 | "1" | "one" => "one "
case "two"=> 2
case s:String => "String"
case y:Int=>"Int 类型 "
case _ => "其他"
}
println(glob(4))//Int 类型
例子五正则多值匹配:
val Pattern1="(quest_.*)".r
val Pattern2="(kp_max_.*)".r
val Pattern3="(ukq_.*)".r
/***
* 根据提供的key返回value数据,屏蔽底层差异
* @param key
*/
def get(key:String):Any= key match {
case Pattern1(_) | Pattern2(_) => r.get(key) //返回string
case Pattern3(_) => r.lrange(key,0,29).get //返回list
case _ => ""
}
println(get("kp_max_1000168"))
println(get("quest_494bdc1bd1c34cfa8064d8d38382659f"))
println(get("ukq_1001_10034"))
println(get("xfd"))
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
2. **Scala的基础语法** 3. **面向对象与函数式编程融合** 4. **Scala中的类与对象** 5. **Scala中的模式匹配** 6. **Scala中的高阶函数** 7. **Scala并发与Akka模型** 8. **Scala在大数据处理中的应用** #### 1. ...
本教程将深入探讨Scala中的Case Class和模式匹配这两个关键概念,通过实例和源代码帮助你理解和掌握它们。下面是对每个知识点的详细说明。 **Case Class** 在Scala中,Case Class是一种特殊的类,它被设计用于模式...
通过对上述设计模式在Scala中的实现进行分析,我们可以看出Scala通过简洁的语法和丰富的语言特性大大简化了模式的实现过程,使得代码更加清晰易懂。对于软件开发者而言,在使用Scala进行开发时,适当运用设计模式...
对于初学者来说,理解Scala的基本语法和特性是至关重要的,因为这将帮助他们更好地掌握这门语言并利用其在实际项目中的优势。 1. **基本语法** Scala的代码风格简洁且易于阅读。变量声明可以使用`val`(不可变)或...
模式匹配是Scala中的一个重要特性,可以用来解构复杂的数据结构,如列表、元组或自定义的case类,简化了条件判断和数据解析。 **8. Type Inference** Scala具有强大的类型推断能力,很多情况下,编译器可以自动推断...
Scala支持传统的`if-else`结构,同时也支持使用模式匹配(`match-case`)进行更复杂的条件判断。 **块表达式**: 在Scala中,一个由花括号包围的代码块可以返回一个值。最后一个表达式的值即为整个块的返回值。 **...
2. **基础语法**:Scala 的语法融合了面向对象和函数式的元素。例如,在定义一个简单的函数时,可以使用以下语法: ```scala def greet(name: String): String = { s"Hello, $name!" } ``` 上述代码定义了一个...
模式匹配是Scala中强大的语法特性,它允许我们在一个表达式中同时检查多种可能的情况。例如,解构元组或处理枚举类型时,模式匹配非常有用: ```scala val tuple = (1, "two") tuple match { case (i: Int, s: ...
基本的模式匹配语法是将一个表达式跟在`match`关键字后面,然后用一对大括号包裹一系列的`case`分支。例如: ```scala val a: Int = 10 val operator: Char = '+' val result = operator match { case '+' => a + ...
Scala设计模式是指在Scala编程语言中实现的一系列软件设计模式。设计模式是一套被反复使用的、经过分类编目的、多种涉及软件设计的解决方案,它们代表着最佳实践,通常被有经验的Scala开发者所采用。Scala作为一种...
- Scala鼓励使用case类,它们提供了简洁的语法和默认的equals、hashCode和toString实现。 - 优先使用对象而不是静态方法,以支持面向对象设计原则。 - 抽象类和接口通过trait实现,trait可以多重继承。 5. **...
1. **Scala语言基础**:详尽阐述Scala的基础语法,如变量、运算符、流程控制等。 2. **类型系统深度探索**:深入讨论类型系统,包括类型参数化、类型推断和类型层次结构。 3. **模式匹配和case类**:如何有效地使用...
### Scala基础语法详解 #### 一、Scala简介与特点 Scala是一种现代的多范式编程语言,它结合了面向对象编程和函数式编程的特点。Scala的设计目标是解决Java等传统面向对象语言在扩展性和灵活性方面的局限性。Scala...
它常与case类和`match`关键字一起使用,为函数式编程提供了一种简洁的控制流表达方式。 惰性求值 Scala支持惰性求值,这意味着一个值只有在真正需要的时候才会计算。这有助于优化性能,特别是对于昂贵的计算或大型...
- **匹配(match表达式)**:类似于Java中的switch-case语句。 - 示例:`val x = 1; val result = x match { case 1 => "one" case 2 => "two" }` - **异常处理(throw/try)**:用于处理程序中可能出现的错误。 - ...
- `match` 表达式类似 Java 中的 `switch` 语句,但更加强大,支持模式匹配。 ### 3. 函数与方法 - **函数定义与调用**:可以定义具有各种参数和返回类型的函数。 - **方法重载**:通过提供不同数量或类型的参数...
本教程基于韩顺平老师的教学内容,旨在帮助初学者掌握Scala的基础语法和核心特性。 一、基础语法 1. 变量声明:Scala中的变量分为val(不可变)和var(可变)。例如: ```scala val immutableVar = "Hello" var ...