zoukankan      html  css  js  c++  java
  • 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中执行过,没有问题!

  • 相关阅读:
    UVALive 5983 MAGRID DP
    2015暑假训练(UVALive 5983
    poj 1426 Find The Multiple (BFS)
    poj 3126 Prime Path (BFS)
    poj 2251 Dungeon Master 3维bfs(水水)
    poj 3278 catch that cow BFS(基础水)
    poj3083 Children of the Candy Corn BFS&&DFS
    BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
    洛谷P3178 [HAOI2015]树上操作(dfs序+线段树)
    洛谷P3065 [USACO12DEC]第一!First!(Trie树+拓扑排序)
  • 原文地址:https://www.cnblogs.com/shihuc/p/5070121.html
Copyright © 2011-2022 走看看