• 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中执行过,没有问题!

  • 相关阅读:
    篮球中PRA意思
    篮球中PRA意思
    Ajax介绍
    QQ播放器代码
    QQ播放器代码
    QQ播放器代码
    DataSet对象
    DataReader对象
    Connection对象
    DataAdapter对象
  • 原文地址:https://www.cnblogs.com/shihuc/p/5070121.html
Copyright © 2020-2023  润新知