scala函数定义的四种方式

最近开始接触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中执行过,没有问题!

原文地址:https://www.cnblogs.com/shihuc/p/5070121.html