scala学习(2)-基本语法--for循环和if语句
2017-02-04 18:25
836 查看
上一篇博客我对scala做了最基本的讲述吧,主要是我就知道那么多,哈哈,好啦,今天我们看看在任何语言中我们用的最多的两种语句吧。一猜就中,for和if语句。
当然开始之前我们还是说一下在scala中的变量的定义怎么来。
在scala中,var表示的是可变的变量,也就是我可以取做count0+=1的操作,但是count1 += 1就是不行的,编译的时候就会报错,切忌这一点,其他的话,scala他会自动识别数据类型,例如count0就是Int类型,name0就是字符串类型,num0就是double类型的。
在我们做判断的时候最常用的就是这三种了,但是我们发现其实这三种和别的语言的判断语句几乎是没什么差别的,要说差别,可能就是没有哪个”;”了吧。
他们两个的输出结果都是45没什么差别。
当然有了while就必须有doWhile
当然一样的是do…while的语句特点就是先处理在判断,这点要注意,其他的地方暂无处理。哈哈。
List是scala的集合,这点我们以后会讲,这里主要讲的是循环,看上去是不是超简洁。不想java里边,
这还是简介了一部分,接下来还有更好玩的的。
代码如上,我们如果需要做一些处理,就可以再()里边直接加判断条件,多过滤条件可以再a>2后边加分号继续做筛选,这样打印出来的信息就是3456,大家可以想想如果这个语句放到java中会事什么样子。
scala中有一个关键字yield,他会吧集合里边的数据存放到一个区域,然后我们就可以取出来。就像操作集合一样。
其实他和for很像,需要注意的是在foreach中如果只有语句代码,例如print(a),则什么也不需要做,但是如果需要在里边需要对变量做处理,则需要在each中加入大括号{},其他的一样啦,大家看看,有没有比java少一些代码。
当然开始之前我们还是说一下在scala中的变量的定义怎么来。
变量
在scala中如果要定义变量,我们通常有两种方式,如下:var count0 = 0 var name0 = "" var num0 = 0.111 val count1 = 0 val name1 = "" val num1 = 0.111
在scala中,var表示的是可变的变量,也就是我可以取做count0+=1的操作,但是count1 += 1就是不行的,编译的时候就会报错,切忌这一点,其他的话,scala他会自动识别数据类型,例如count0就是Int类型,name0就是字符串类型,num0就是double类型的。
if语句
if
其实if语句和java的if语句几乎没什么差别,要说差别的话,可能就是在scala里边一句话的结束是不需要“;”的,我能想到的也就是这个了。来看一下例子。@Test def testIf(): Unit = { val flag = true if (flag) { println("flag::::" + flag) } //flag::::true }
if…else
其实这也没什么好说的啦,直接上代码更直接@Test def testIfElse(): Unit = { val flag = true if (true) { println("flag::::" + flag) } else { println("flag::::" + flag) } //flag::::true }
if.. else if
@Test def testIfElseAndIfElse(): Unit = { val flag = true if (true) { println("flag::::" + flag) } else if (false) { println("flag::::" + false) } else { println("flag::::" + null) } }
在我们做判断的时候最常用的就是这三种了,但是我们发现其实这三种和别的语言的判断语句几乎是没什么差别的,要说差别,可能就是没有哪个”;”了吧。
循环语句
while语句
while的语句特点就是选判断,然后做处理,例如@Test def testWhile(): Unit = { var count = 0 var sum = 0 while (count < 10) { sum += count count += 1 } count = 10 while (count < 0) { sum += count count -= 1 } println(sum) }
他们两个的输出结果都是45没什么差别。
当然有了while就必须有doWhile
dowhile语句
@Test def testDoWhile(): Unit ={ var count = 0 var sum = 0 do{ count += 1 sum += count }while(count <10) println(sum) }
当然一样的是do…while的语句特点就是先处理在判断,这点要注意,其他的地方暂无处理。哈哈。
for
@Test def testFor(): Unit ={ val numList = List(1,2,3,4,5,6) for (a <- numList){ print(a) } //result:::123456 }
List是scala的集合,这点我们以后会讲,这里主要讲的是循环,看上去是不是超简洁。不想java里边,
for(int i=0; i<numList.size();i++){ system.out.println(a); }
这还是简介了一部分,接下来还有更好玩的的。
for过滤器
@Test def testForFilter(): Unit ={ val numList = List(1,2,3,4,5,6) for (a <- numList if a>2){ print(a) } //result:::3456 }
代码如上,我们如果需要做一些处理,就可以再()里边直接加判断条件,多过滤条件可以再a>2后边加分号继续做筛选,这样打印出来的信息就是3456,大家可以想想如果这个语句放到java中会事什么样子。
for yield
当然我们也可以吧上边筛选的结果存到一个集合里边,在java里边大家脑补一下代码吧,然后看看scala中如何做到的。@Test def testForYield(): Unit ={ val numList = List(1,2,3,4,5,6) val refVal = for {a <- numList if a>2;if a !=4 } yield a for( a <- refVal){ println( "Value of a: " + a ); } /*Value of a: 3 Value of a: 5 Value of a: 6*/ }
scala中有一个关键字yield,他会吧集合里边的数据存放到一个区域,然后我们就可以取出来。就像操作集合一样。
foreach
@Test def testForeach(): Unit ={ val numList = List(1,2,3,4,5,6) var content = "" numList.foreach(a=>print(a)) println() numList.foreach({ a => content += a }) println(content) /* 123456 123456*/ }
其实他和for很像,需要注意的是在foreach中如果只有语句代码,例如print(a),则什么也不需要做,但是如果需要在里边需要对变量做处理,则需要在each中加入大括号{},其他的一样啦,大家看看,有没有比java少一些代码。
小结
基本语句讲完了,其实也没什么内容,只是感觉他比java少了很多的代码,所以就吧这些代码弄出来,其他的倒也没什么。下一篇我们来看看scala的函数吧。相关文章推荐
- 一键搭建WordPress博客环境(OneStep to WordPress)
- 添加第三方库到Maven资源库
- 添加Maven(mvn)、sbt的国内仓库
- Windows下Scala环境搭建
- 你应该学习哪种编程语言?
- [转]我们需要一种其他人能使用的编程语言
- 新注册
- 四大漏洞入侵博客
- C#语言主要特性总结
- 在Ubuntu系统上安装Ghost博客平台的教程
- C语言中static的作用及C语言中使用静态函数有何好处
- PHP检测用户语言的方法
- 利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
- Windows7下安装Scala 2.9.2教程
- JavaScipt基本教程之JavaScript语言的基础
- PHP多用户博客系统分析[想做多用户博客的朋友,需要了解]第1/3页
- 各种语言、服务器301跳转代码全集
- 查看Java所支持的语言及相应的版本信息
- 使用php判断浏览器的类型和语言的函数代码
- php实现获取及设置用户访问页面语言类