当前位置:
首页 >
【scala初学】scala 控制 for while match if
发布时间:2023/12/15
44
豆豆
生活随笔
收集整理的这篇文章主要介绍了
【scala初学】scala 控制 for while match if
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
上一章我们共同研究了for循环以及变种。这章我们围绕比较常用的几个其他控制语句学习。
首先,对for进行补充, For-Comprehensions
格式: for (s ) yield e
举例:
| 1 2 3 | var range = 0.until(10) var m = for (p <- range if p > 5) yield p println(m); |
结果:
Vector(6, 7, 8, 9)
下面我们根据官方例子来先大家展示一下,格式如下:
| 1 2 3 4 | //A simple for-comprehension for (x <e) yield e’ //is translated to e.map(x => e’) |
意思就是说 for循环这种方式可以用于和map互换(如果你有java基础,应该知道map是什么)
首先,来看看具体官方例子:
| 1 | for (p <persons if p.age > 20) yield p.name |
我们自己为他补全代码
| 1 2 3 4 5 6 7 | class person (name1:String, age1 : Int) { var age = age1; var name = name1; } var persons : List[person] = List(new person("s",1),new person("a",2),new person("b",3)); var n2 = for (p <- persons;if p.age > 1) yield p.name println(n2); |
打印结果会是
| 1 | List(a, b) |
根据结果,我们得到了p.age大于1的 所有person的name.即p.name
这种方式,很类似一个
| 1 | var persons = Map(a -> 1, b -> 2, c -> 3) |
通过键值对的方式取值。顺便学习下Map吧
| 1 2 3 4 | var range1 = 1.until(4) var m1 = Map(1 -> 24, 2 -> 25, 3 -> 26) var n = for (p <- range1 if p > 1) yield m1(p) println(n) |
结果是
| 1 | Vector(25, 26) |
for语句还可以更复杂点
| 1 2 3 4 | var m = for { i <- 0.until(10) j <- 1.until(i) if i+j>5} yield (i, j) println(m) |
还可以更复杂点,但目前够用了。 大家要理解for,从上一章到这一章基本够用了。下面补充其他的常用控制语句。
一 while
| 1 2 3 | while (true) { //TODO do something } |
会死循环,切记慎用,还可以这样
| 1 2 | do{ //DO SOMETHING} while (true) |
java程序员可能会犯的错误
| 1 2 3 | var line = "" while ((line = readLine()) != "") //记住scala不支持这种方式,line会得不到值 println("Read: "+ line) |
二 match
| 1 2 3 4 5 6 7 | var a = 1; var i = 0; a match { case 1 => i = 2 case 2 => i = 5 } println(i); |
参数a 可以用一个函数的返回值替换
| 1 2 3 4 5 6 7 8 9 10 11 | def match_re : Int={ 1 } def match_1={ var i = 0; match_re match { case 1 => i = 2 println("i = 2"); case 2 => i = 5 println("i = 5"); } |
这里我们看到特殊符号 => 再一次出现, 用于 case when
三 if else
| 1 2 3 4 5 6 7 8 | var a = 3 if(a>3){ println("3 success"); }else if(a>2){ println("2 success"); }else{ println("success"); } |
本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/1412807,如需转载请自行联系原作者
总结
以上是生活随笔为你收集整理的【scala初学】scala 控制 for while match if的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 英雄联盟两个字的名字有哪些好听(给英雄一
- 下一篇: 关于json 转换BigDecimal精