【scala 笔记(5)】 Scala中的函数

scala 除了支持方法(方法是对object的操作,也就是java中定义的class的方法)外还支持函数的; C/C++、Python 也有函数, 而在Java中我们只能通过静态方法来模拟。

函数

函数定义

要定义一个函数,你要给出函数的名称、参数和函数体 ; 例如:

def fac(x:Int) = {
      var result = 1
      for (i <- 1 to x) result = result * i
      result
    }

你必须给出所有参数的类型。 不过,只要函数不是递归的,你就不需要指定返回类型, scala 会根据 = 号右边的表达式推导出返回的类型。或进行显式定义为:

def fac(x:Int) :Int = {
      var result = 1
      for (i <- 1 to x) result = result * i
      result
    }

注: 本例中不需要使用return,当然我们也可以使用return来立即从函数中退出, 不过在scala中使用return并不常见, 我们最好要适应没有return的日子, 我们可以把 return 当做 函数版本的 break 语句, 仅在需要时进行调用。

默认参数和带名参数

我们在调用某些函数时不显式的给出所有参数值,对于这些函数可以使用默认值:

scala> def show(msg:String, left:String="[", right:String="]"){
     |       println("%s%s%s".format(left, msg, right))
     |     }
show: (msg: String, left: String, right: String)Unit

scala> show("hello")    // 调用方式1
[hello]

scala> show("hello", "<", ">") // 调用方式2
<hello>

scala> show(left ="info[", msg ="hello") // 调用方式3
info[hello]

注: 这里定义的函数在Scala中被称为过程; Scala 对于不返回值的函数有特殊的表示法, 如果函数体包含在 {} 中但前面没有 = 号, 那么返回的类型为Unit。 这种函数被称为 过程(procedure) , 也可以显式定义为 Unit返回类型:

def show( ... ): Unit = {
    ......
} 

不定长参数

实现一个可变长参数的函数, 例如:

scala> def show(args: Any *){
     |       for (arg <- args){
     |         arg match {
     |           case i: Int =>
     |             println("type int: %d".format(i))
     |           case s: String &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值