Scala--控制结构和函数

2016/04/04 19:20
阅读数 191

条件表达式

if/else的表达式语法和java类似,只是需要注意的是:

1、if/else有返回值

2、scala代码结尾不需要“;”,除非一行要写多条语句,这个和Python类似。

上图中,在scala脚本中,打印出了if的返回值0。

块语句

在scala中“{}”包含的一系列表达式,叫做块语句,块中最后一个表达式的值就是块的值

while循环

while循环,和java的while和do循环相同,这里就不过多讲解了,实例如下图所示。

在"Repl"中写多行代码的时候,每写一行敲一下“回车键”然后它会自动去识别程序是否结束,直到你真正的写完代码,有时候不是很方便; 还有一种粘贴的方法,输入:paste然后就可以随意的写代码了,写完后Ctrl+D退出并运行代码,如上图所示。

for循环

for基础

语句结构:

for( i <- 表达式 )  #让变量i遍历<-右边的表达式的所有值,i具体执行取决于表达式
  循环体

for循环的变量之前没有val或var的指定,该变量的类型是集合的元素类型。循环变量的作用域一直持续到循环结束。 until:返回一个并不包含上线的区间。 scala中没有breakcontinue来退出循环,我们可以这样操作

  1. 使用Boolean的变量控制。
  2. 使用嵌套函数,可以从函数当中return。
  3. 使用Breaks对象的break方法。
  • eg:
breakable{
 for(...){
  if(...) break ;//#退出breakable块
} }

for进阶

  1. 在for循环“()”中可以使用多个生成器, 用“;”隔开;
  2. 并且每一个生成器都可以带一个**守卫**(if开头的Boolean表达式);
  3. 可以使用变量,如下图所示:

  • 如果for循环的循环体以yield开始,该循环就会构造出一个集合,每次迭代就生成一个集合的值。

函数

基本语法

语法如图:

(图来源于:Scala编程)

  1. 函数必须指定参数的类型
  2. 函数只要不是递归的就不需要指定返回值类型(因为无法推断出递归函数的类型)。
  3. 在函数中,不需要使用return。

函数参数

在函数中,我们可以使用默认参数。函数调用时:

1、如果没用给出所有参数,函数会使用默认参数(后面不够的参数使用默认值)。 2、也可以指定参数名,参数名不需要按顺序排列。 3、如果混合使用(未名参数和带名参数),只要未名参数排在前面即可。

4、变长参数,可以接受多个参数

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,由于没有返回值也可以省略“=”号,下面语句相同:

展开阅读全文
打赏
1
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
1
分享
返回顶部
顶部