Scala的方法的定义

定义方法

定义方法的基本格式是:       

def 方法名称(参数列表):返回值类型 = 方法体   

参数传递

  //定义我的第一给方法
    def myFirstMethod():Unit= {
        println("hello world")
    }

多参数列表的方法:

def calculate(a: Int,b:Int):Int= a+b
def calculate(a: Int,b:Int,c:Int):Int= a+b+c

定义方法不写等号

//此时不会通过右侧方法的结果,来自动的推导返回值类型  隐式加了  Unit =
def myTest() {
        println("我的scala方法")
    }

scala写参数的默认值

/**
     *定义方法时候,scala允许某写参数是有默认值的,在调用时可以不进行设置
     * @param x 计算的参数x
     * @param y 计算的参数y
     * @param z 计算的参数在,是一个默认值的参数
     */
    def calculate(x:Int,y:Int,z:Int=10):Int ={
        println(s"x=$x,y=$y,z=$z")
        x+y+z
    }

    println(calculate(10, 20,20))
//有默认值的参数,在进行方法调用时按顺序赋值,看起来x默认值没有意义
    def calculate2(x:Int =5,y:Int,z:Int=10):Int ={
        println(s"x=$x,y=$y,z=$z")
        x+y+z
    }

//带名参数
        println(calculate2(y = 20))

scala方法的递归

//递归斐波那契数列
    def getFebonacci(index:Int):Int = {
        if (index == 1 || index==2){
            return 1
        }
        getFebonacci(index - 1 )+getFebonacci(index - 2)
    }

scala方法的不定长度参数

//不定长度参数
    def getSum(number:Int*):Int={
        var sum = 0
        for (n <- number){
            sum += n
        }
        sum
    }

    println(getSum(1, 2,3, 4, 5, 6, 7, 8, 9))

 //拓展
        /*在java中,变长参数可以直接传递一个参数。但是scala不允许的*/
        val array = Array(1,2,3,4,5,6,7,8,9)
        //_* 展开数组
        println(getSum(array:_*))

按值传递:参数是被传递到方法中时,已经求出具体值了  上面的就是

 Scala的方法按名传递、

def doVeryThing(a: =>Unit): Unit ={
    a   //最后输出为2
}

doVeryThing{   //相当里面的所有赋值给a
    val c = 2
        if (c == 2){
        println(c)
        }
}

按名传递:

//按名传递:call-by-name
def square(x: =>Int): Int = { //注意x:后的空格
    println(x)    //计算1+2
    x * x         //计算(1+2)*(1+2)
}
square({1+2})   //调用时不计算

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值