最近开始接触scala编程语言,觉得还是比较新的一个东西,虽然说和java比较像,是java的继承者,兼顾面向对象编程和函数式编程的优点,但是,终究是一个新的东西,还是要从最基本的学起。而这当中,函数是scala语言的核心部分。
所以,今天,就只说函数的东西。下面是函数定义的基本语法:
1 def functionName ([list of parameters]) : [return type] = { 2 function body 3 return [expr] 4 }
其实,上面的return关键字是可以不需要的,scala编译器会自行推演,但是,为了函数的可读性,还是加上return比较好。
一个函数,若它不返回任何东西,这相当于在Java中返回void,并表示该函数不返回任何单元。Scala中不返回任何东西函数被称为过程。
scala的函数,有4种常见的风格,当然,这些风格是根据使用场景的不同来选择的。
下面直接上代码,在代码中带有注释,表达的比较清楚些:
1 package lession1 2 3 object functions { 4 5 /* 6 * 写法一,始终待返回值 7 * 函数是否带有return没有关系,都会正常返回x+y的值。 8 * 9 * 写成下面的形式,也是对的: 10 * def add(x:Int,y:Int):Int={ 11 * x+y 12 * } 13 */ 14 def add(x:Int,y:Int):Int={ 15 return x+y 16 } 17 18 /* 19 * 写法二,省略不是Unit类型的返回值类型;如果没有写返回值,则根据等号后面的内容进行类型推演 20 */ 21 def test(x:Int)={ 22 x 23 } 24 25 /* 26 * 写法三,省略等号,返回Unit 27 */ 28 def returnVoid(){ 29 println("返回 void") 30 } 31 def returnUnit():Unit={ 32 println("另外一种方法返回 void") 33 } 34 35 /* 36 * 写法四:省略花括号,如果函数仅包含一条语句,那么连花括号都可以选择不写,这个就和java8中的lamda一样了。 37 */ 38 def max2(x: Int, y: Int) = if (x > y) x else y 39 def greet() = println("Hello, world!") 40 41 /* 42 * 比较常见的main函数的写法是下面注释的这种,比较简洁,但是本例子中带有Unit类型,是为了说明用Unit来表达返回空。 43 * 44 * def main(args:Array[String]){ 45 * println(add(1,2)) 46 * println(test(1)) 47 * returnUnit() 48 * } 49 */ 50 def main(args:Array[String]):Unit ={ 51 println(add(1,2)) 52 println(test(1)) 53 returnUnit() 54 } 55 }
今天就写到此吧,本人一边学一边记录,上面的代码是测试验证过的。在Luna Scala版本的eclipse中执行过,没有问题!