这篇文章主要讲解了“scala条件控制与循环怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scala条件控制与循环怎么实现”吧!
一、条件判断 if
在scala中,if条件判断是有返回值的,就是if或者else的最后一个值,如下:
scala> var age = 23age: Int = 23scala> var isAdult = if(age >= 18) "yes" else "no"isAdult: String = yes
因为age是23已经大于18,所以if语句返回了yes给isAdult。此外我们可以注意到,在isAdult: String = yes
中,isAdult是scala默认给的String类型,因为if和else都是String类型,那如果我们不给一样的类型呢?来试试吧:
scala> if(age >= 18) "yes" else 0res0: Any = yes
如果if和else类型不一致,scala则会取两者的公共父类型,String和Int的公共父类型就是Any,它是所有其他类的超类哦。那么我们再来思考一个问题,如果只有if没有else,if还不满足的话会返回什么呢?如下:
scala> if(age < 18) "yes"res1: Any = ()
如果if后面没有跟else,则默认else的值是Unit,用()表示。
通常情况scala解释器一次只能解释一行,但这明显不足以满足条件判断的需求,很多时候代码量不止一行,所以接下来说说怎样使用多行if
(1)使用大括号{},最后用}收尾即可
scala> if(age > 18){ | "yes" }else{ | "no"}res3: String = yes
(2)使用:paste进入粘贴模式,随意编辑,编辑完后摁Ctrl+D即可退出粘贴模式
scala> :paste// Entering paste mode (ctrl-D to finish)if(age > 18) "adult"else "children"// Exiting paste mode, now interpreting.res5: String = adult
二、输入输出 print、println、readLine()
print打印输出语句不加换行符,println会加换行符,如下:
scala> print("Hello world")Hello worldscala> println("Hello world")Hello world//这里受println影响换行了
在println打印完成后,进行了换行,print却没有。
readLine()用于用户输入,如下:
scala> readLine()res10: String = Hello
在readLine()执行时是看不见自己的输入的,输入完回车即可看见,比如上方输入的 “Hello”就是输入完回车才看见的
三、循环 while、for
scala的while和java基本一致,如下:
scala> :paste// Entering paste mode (ctrl-D to finish)var number = 0while(number<5){print(number + " ")number += 1}// Exiting paste mode, now interpreting.0 1 2 3 4 number: Int = 5
注意,scala是没有java的for循环的,只有使用while或者简易版本的for循环,如下:
scala> for(i <- 0 to 5) print(i+" ")0 1 2 3 4 5
这是一段从0遍历到5打印的代码,需要变量名,小箭头<-
,初始值,终止值,也可以使用until代替to,这样的话不会到达终止值,如下:
scala> for(i <- 0 until 5) print(i+" ")0 1 2 3 4
对于字符串也可以通过for循环来完成遍历
scala> for(c <- "Hello,World") print(c + " ")H e l l o , W o r l d
scala没有java的break跳出循环,但是可以使用Breaks包下的break函数达成类似效果,
scala> import scala.util.control.Breaks._import scala.util.control.Breaks._scala> :paste// Entering paste mode (ctrl-D to finish)breakable { var n = 10 for(c <- "Hello World") { if(n == 5) break; print(c) n -= 1 }}// Exiting paste mode, now interpreting.Hello
接下来说一下for循环的高级版本,多重循环,我们来实现一个99乘法表,如下:
scala> :paste// Entering paste mode (ctrl-D to finish)for(i <- 1 to 9; j <- 1 to 9) { if(j == 9) { println(i * j) } else { print(i * j + " ") }}// Exiting paste mode, now interpreting.1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 18 21 24 274 8 12 16 20 24 28 32 365 10 15 20 25 30 35 40 456 12 18 24 30 36 42 48 547 14 21 28 35 42 49 56 638 16 24 32 40 48 56 64 729 18 27 36 45 54 63 72 81
在这串代码中,i从1到9,j也是从1到9,第一次循环i=1,j=1;第二次循环i=1,j=2,直到i=1,j=9时,打印换行,然后i=2,j=1,以此类推
for循环还可以条件判断,我们实现一个取偶数,如下:
scala> for(i <- 1 to 10 if i%2 ==0)print(i+" ")2 4 6 8 10
还可以通过for循环构造集合,如下:
scala> for(i <- 1 to 10) yield ires11: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
yield关键字可以配合for循环直接构造集合。
感谢各位的阅读,以上就是“scala条件控制与循环怎么实现”的内容了,经过本文的学习后,相信大家对scala条件控制与循环怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3969474/blog/4402838