scala定义函数的几种方式

scala是面向对象的语言,同时也是函数式编程语言。函数在scala中是一等公民,它和变量一样,既可以作为其他函数的参数,也可以将函数赋值给一个变量。 在scala中定义函数有很多方式,不熟悉scala的同学初看之时难免被搞得晕头转向。这里,我试图按照函数是否有返回值来总结一下函数定义的规律,仅供参考

一、 有返回值的函数定义

1、标准形式(就是函数形参,返回类型,return语句全有) def addInt(a:Int, b:Int):Int = { var total:Int = a + b return total } 括号里是形参,冒号后面是返回类型,大括号里是函数体。 注意,有返回值的函数定义在大括号前必须有等号,不能省略。
2、省略返回类型和return 当有返回值的时候,可以不显式写出返回类型,scala会自动判断。同时return也可以省略。上面的函数可以简写成: def addInt(a:Int, b:Int) = { a + b } scala自动返回函数体中最后一个表达式的值并判断类型。这里再多说一句,在java中例如x=1这样的表达式返回的是1,而在scala中赋值语句返回的是空值。所以,如果你想返回值,不要以赋值语句作为最后一条语句。
3、省略大括号 当函数体只有一行语句的时候,可以省略大括号。上面的函数可以再简写成: def addInt(x:Int, y:Int) = a + b 怎么样,是不是比java简洁很多。 上面3种情况是有返回值的,下面说说无返回值的,更简单。

二、无返回值的函数定义

1、显式标识无返回值 def retrunNone(a:Int,b:Int):Unit = { print(a + b) } Unit关键字表示函数无返回值。
2、省略Unit 和有返回值类似,这里也可以省略Unit,让scala自己去知道这个函数无返回值。那么它是怎么知道的呢?就是省略等号。当函数定义没有等号的时候,scala认为这个函数无返回值。 def retrunNone(a:Int,b:Int){ print(a + b) }
最后,我们说说也是经常会看到的一种函数定义——匿名函数。 匿名函数顾名思义,就是没有名字的函数。它可以作为函数的参数,也可以直接赋值给变量。 val addInt = (x:Int,y:Int)=> x + y //将一个函数赋值给变量,调用的时候addInt(1,2) def myFun(f : (Int,Int) => Int, x:Int, y:Int) = f(x,y) 上面这个函数定义了一个匿名函数作为函数的参数,这个匿名函数有两个Int的参数,返回类型是Int。 调用的时候我们可以将任何满足匿名函数条件的函数传入,比如addInt。 那么就是myFun(addInt, 1, 2),返回的是3。 好了,函数定义就先说这么多,欢迎关注后续文章。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值