开发者学堂课程【Scala 核心编程 - 进阶:变量声明中的模式使用】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9078
变量声明中的模式应用
变量声明中的模式
1.基本介绍
match 中每一个 case 都可以单独提取出来,意思是一样的。
来看下面的代码,不需要写 matchcase 语句,直接拿出来用。
2.应用案例:
val(x, y)=(1,2)
val (q,r) = BigInt(10) /% 3 //说明q= BigInt(10) / 3 r = BigInt(10) % 3
val arr = Array(1,7,2,9)
val Array(first,second,_*) = arr
println(first,second)
//案例演示+说明
定义了两个变量,一个是x和y,有时候我们需要定义三个整型,速度很慢,所以直接用这种方式。
BigInt(10)/%3可以一步到位,相当于bigint(10)/3交给了q,把bigint(10)%3交给了r,分别对待。
比如有一个数组想要拆解一部分内容,将数组给一个val,把第一个1给 first,把7给second,其他给别的。该行意思就是要提出arr前两个元素
以上案例就可以快速的一次性定义多个变量,比较简洁。接着来运行,新建一个Scala Class为MarchVarDemo,粘贴以上代码,
代码完整如下:
package com.atguigu.chapter12
object MatchvarDemo {
def main(args : Array [string]): unit = {
val(x, y)=(1,2)
val (q,r) = BigInt(10) /% 3 //说明q= BigInt(10) / 3 r = BigInt(10) % 3
val arr = Array(1,7,2,9)
val Array(first,second,_*) = arr
println(first,second)
}
}
可以分别打印,在val(x, y)=(1,2)下添加printx,x直接为int。也可以新增一个z,例如val(x,y,z)=(1,2,”hello”),再打印输入println(z),z此时显示为String。
修改代码为
val(x,y,z)=(1,2,”hello”)
println(“x=” +x)
先来运行该功能,注释掉下面内容,查看结果为x=1,这就是一次性定义多个变量。
val (q,r) = BigInt(10) /% 3写法较少,/和%合并写,等价于q= BigInt(10) / 3 r = BigInt(10) % 3不进行演示。
再来看下一行,有一个数组(1,7,2,9),假如就想提取出第一个第二个,直接写
val Array(first,second,_*) = arr
println(first,second)
即可
运行结果为: (1,7)
以上就是所讲的变量声明模式。