vlambda博客
学习文章列表

「大数据」(八十七)Scala之控制器和函数

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[87]篇文章,欢迎阅读和收藏】

1 基本概念

和其它语言(比如 Java , C#) 相比, Scala 只内置了为数不多的几种程序控制语句:if , while , for , try match 以及函数调用,这是因为从 Scala 诞生开始就包含了函数字面量, Scala 内核没有定义过多的控制结构,而是可以通过额外的库来扩展程序的控制结构。Scala 的所有控制结构都有返回结果,如果你使用过 Java 或 C# ,就可能了解 Java 提供的三元运算符 ?: ,它的基本功能和 if 一样,都可以返回结果。Scala 在此基础上所有控制结构( while , try , if ,等)都可以返回结果。


当程序越来越大,你需要将代码细化为小的容易管理的模块。Scala 支持多种方法来细化程序代码,这些方法也为有经验的程序员已经掌握的:使用函数,和 Java 相比, Scala 提供了多种 Java 不支持的方法来定义函数,除了类成员函数外, Scala 还支持嵌套函数,函数字面量,函数变量等。

2 术语解释

头等公民: Scala 中函数为头等公民,你不仅可以定义一个函数然后调用它,而且你可以写一个未命名的函数字面量,然后可以把它当成一个值传递到其它函数或是赋值给其它变量。

闭包: 闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。

3 详细说明

控制器:

Scala 只内置了为数不多的几种程序控制语句:if , while , for , try match 以及函数调用,但“麻雀虽小,五脏俱全”,虽然少,但足够满足其他指令式语言(如 Java,C++ )所支持的程序控制功能,而且由于这些指令都有返回结果,可以使得代码更为精简。

3.1 SCALE IF…ELSE 语句

Scala IF...ELSE 语句是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。

语 法

if 语句的语法格式如下:

if(布尔表达式)
{
   // 如果布尔表达式为 true 则执行该语句块
}

如果布尔表达式为 true 则执行大括号内的语句块,否则跳过大括号内的语句块,执行大括号之后的语句块。

实 例

object Test {
   def main(args: Array[String]) {
      var x = 10;
      if( x < 20 ){
         println("x < 20");
      }
   }
}

3.2 SCALE 循环控制

循环语句允许我们多次执行一个语句或语句组

3.3 函数

Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala 中的方法跟 Java 的类似,方法是组成类的一部分 ,Scala 中的函数则是一个完整的对象, Scala 中的函数其实就是继承了 Trait 的类的对象。

Scala 中使用 val 语句可以定义函数, def 语句定义方法。

函数声明

Scala 方法声明格式如下:

def functionName ([ 参数列表 ]) : [return type]

函数定义

函数定义由一个 def 关键字开始,紧接着是可选的参数列表,一个冒号 : 和方法的返回类型,一个等于号 = ,最后是方法的主体。