Scala的函数以及函数参数

1、定义函数时,需要定义函数的函数名、参数、函数体。

Scala要求必须给出所有参数的类型,但是不一定给出函数返回值的类型,只要右侧的函数体中不包含递归的语句,Scala就可以自己根据右侧的表达式推断出返回类型。

举例eg:

def sayHello(name: String, age: Int) = {
	if (age > 18) { 
        printf("hi %s, you are a big boy\n", name)
        age 
    } else {
         printf("hi %s, you are a little boy\n", name)
         age 
    }
}

调用:sayHello("Tom", 15)

定义单行函数:

def sayHello(name: String) = print("Hello, " + name)

2、函数的默认参数

当调用某些函数时,不希望给出参数的具体值,而希望使用参数自身默认的值,此时就定义在定义函数时使用默认参数;

举例:eg

def sayHello(firstName: String, middleName: String = "swift", lastName: String = "Croft") = firstName + " " + middleName + " " + lastName 

3、变长参数:

在Scala中,有时我们需要将函数定义为参数个数可变的形式,则此时可以使用变长参数定义函数。

def sum(nums: Int*) = { 
    var res = 0 
    for (num <- nums) 
        res += num 
    res
}

 

调用方式: sum(1,2,3,5)  是正确的

                   sum( 1 to 5)  是错误的 报 error: type mismatch; 它是一个序列

对于一个序列化的参数 正确的实现方式如下:var s=sum(1 to 5:_*)

用递归的方式实现变长参数的累加

def sum2(nums:Int*):Int={
    if(nums.length==0)
        0
    else
        nums.head+sum2(nums.tail:_*)
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值