if/else
的表达式语法和java相似,只是须要注意的是:java
一、if/else有返回值编程
二、scala代码结尾不须要“;”,除非一行要写多条语句,这个和Python
相似。bash
上图中,在scala脚本中,打印出了if的返回值0。函数
在scala中“{}
”包含的一系列表达式,叫作块语句,块中最后一个表达式的值就是块的值
。 scala
while循环
,和java的while和do循环相同,这里就不过多讲解了,实例以下图所示。code
在"Repl"中写多行代码的时候,每写一行敲一下“回车键”而后它会自动去识别程序是否结束,直到你真正的写完代码,有时候不是很方便; 还有一种粘贴的方法,输入:paste
而后就能够随意的写代码了,写完后Ctrl+D
退出并运行代码,如上图所示。对象
语句结构:递归
for( i <- 表达式 ) #让变量i遍历<-右边的表达式的全部值,i具体执行取决于表达式 循环体
在for循环的变量以前没有val或var的指定,该变量的类型是集合的元素类型
。循环变量的做用域一直持续到循环结束。 until
:返回一个并不包含上线的区间。 scala中没有break和continue来退出循环,咱们能够这样操做:作用域
- 使用Boolean的变量控制。
- 使用嵌套函数,能够从函数当中return。
- 使用Breaks对象的break方法。
breakable{ for(...){ if(...) break ;//#退出breakable块 } }
守卫
**(if开头的Boolean表达式
);语法如图:it
(图来源于:Scala编程)
参数的类型
。返回值类型
(由于没法推断出递归函数的类型)。在函数中,咱们可使用默认参数
。函数调用时:
一、若是没用给出全部参数,函数会使用默认参数(后面不够的参数使用默认值)。 二、也能够指定参数名,参数名不须要按顺序排列。 三、若是混合使用(未名参数和带名参数),只要未名参数排在前面便可。
四、变长参数,能够接受多个参数
def sum(args:Int*) = { var result = 0 ; for(arg <- args) result+=arg result }
调用函数,sum(3,4,6,23,3),函数获得的是一个Seq类型的参数,注意调用函数是传入的参数不能是一个区间,eg: sum(2 to 9)是不能够的,应该为sum(2 to 9:_*);
在scala中,若是函数没有返回值,那么该返回值类型咱们能够用Unit
来表示,这种没有返回值的函数咱们称之为过程
。
上面省略了Unit,因为没有返回值也能够省略“=”号,下面语句相同: