欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
}