Scala学习系列笔记3 - Scala基础语法
程序员文章站
2024-02-18 13:35:40
...
Scala学习系列笔记3 - Scala基础语法
IF-ELSE语句
与其他的语言的基本一致
// 基本语法格式:
if(布尔表达式1)
{
//如果布尔表达式1为true,则执行该语句
}
else if(布尔表达式2)
{
//如果布尔表达式2为true,则执行该语句
}
else
{
//如果上述条件为false,则执行该语句
}
实例:
object IfelseTest{
def main(args:Array[String]){
var x = 25;
if( x <= 10 && x >= 0)
{
println(s"$x 的值在(0,10)之间")
}
else if( x > 10 && x <= 20)
{
println(s"$x 的值在(10,20)之间")
}
else
{
println(s"$x 的值大于20")
}
}
}
循环语句
for循环
Scala中的for循环与C系列语言中的有所差别,其基本语法格式为
for(var x <- 循环区间){
//如果x在该区间范围内则执行该语句
}
//其中循环区间的为一个数字区间,主要语法格式为:
i to j 或者 i until j
//两者区别主要在于i to j 包含j;i until j 不包含j
// 而控制步长可以采用 Range(i,j,step)
// 除此之外,可以采用分号";"来设置多个区间,类似于循环嵌套
// for循环还可以直接通过加入if语句来进行过滤,
// 并且可以通过";"来添加多个过滤条件
实例:
object ForTest{
def main(args:Array[String]){
var x = 0;
var y = 0;
var z = 0;
for( x <- 1 to 5; y <- 1 until 5;z <- Range(1,10,2)
if x!=3;if y>8;){
//上述代表着x会从1按步长1增加到5,类似于x<=5,x++
//y<5,y++;z <- Range(1,10,2),这代表x从1增加到10,步长为2
//后面的条件语句代表,当满足if语句时,下方语句将不会执行
println(s"值x为$x")
println(s"值y为$y")
println(s"值z为$z")
}
}
}
并且 当采用for加上yield关键字时,可以将for循环的返回值作为一个变量存储,其语法格式如下:
var forYield = for{var x <- List
if condition1;if condition2
} yield x
//大括号中用于保存变量和条件,forYield是变量,循环中
//yield会将当前的元素记下来,保存在集合中,循环结束
//后将返回该集合
do-while与while循环
Scala中do-while循环和while循环均和其他语言基本一致
do-while循环相比while循环的差别在于:while循环在循环头部测试循环条件,do-while循环是在循环尾部检查他的条件
do-while循环的基本语法如下:
do{
//循环体
}while(Condition);
//循环体至少会执行一次
while循环的基本语法如下:
while(Condition){
//循环体
}
//循环体可能一次都不执行
模式匹配
乍一听这个名称,感觉十分模式,但是Scala中的模式匹配其实和其他语言中的switch-case是一致的;
模式匹配的基本语法如下:
def MatchTest(o:Any):Unit = {
// 上面的是定义方法格式,后续会提到
o match{
case 1 => println("value is 1")
case 2 => println("value is 2")
case "two" => println("value is Two")
case i:Int => println("type is Int")
case_ => "No Matching..." //类似于default
}
}
match 可以用来匹配值还可以用来匹配类型,并且其匹配过程中会有数值的转换,其匹配机制为从上往下匹配,一旦匹配上了其中一个case就会停止
模式匹配还有一种特殊形式称为偏函数PartialFunction
如果一个方法中只有case而没有match,就可以定义为偏函数,偏函数定义是无法使用括号进行传参
偏函数只能匹配上一个值,匹配上了就放回某个值
PartialFunction[A,B] A是匹配的类型,B是匹配上返回的类型
def MyTest:PartialFunction[String,Int] = {
case "abc" => 2
case "a" => 1
case_ => 200
}
下一篇: vue动态修改title标题