Scala深入学习之函数学习
Posted <一蓑烟雨任平生>
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala深入学习之函数学习相关的知识,希望对你有一定的参考价值。
目录
一、函数的定义
代码示例:
package functionDemo
/**
* @author : 蔡政洁
* @email :caizhengjie888@icloud.com
* @date : 2020/8/23
* @time : 2:14 下午
*/
object FunctionDemo1
// 实现加法的功能
val f1 = ((a:Int,b:Int) =>a+b)
val f2 = (a:Int,b:Int) =>a+b
val f3 = (_:Int)+(_:Int)
val f4:(Int,Int)=>Int = (_+_)
val f5:((Int,Int)=>Int)=((x,y)=>x+y)
val f6 = new Function2[Int,Int,Int]
override def apply(v1: Int, v2: Int): Int = v1+v2
def main(args: Array[String]): Unit =
// 函数调用
val res = f1(10,20)
println(res)
val res2 = f6(100,100)
println(res2)
运行结果:
30
200
二、匿名函数
代码示例:
package functionDemo
/**
* @author : 蔡政洁
* @email :caizhengjie888@icloud.com
* @date : 2020/8/23
* @time : 6:08 下午
*/
object FunctionDemo2
// 定义一个匿名函数
(x:Int)=>x+10
val f1 = (x:Int)=>x+10
val f2 = (x:Int,y:Int)=>x*y
def main(args: Array[String]): Unit =
// 调用匿名函数
println(f1(30))
println(f2(10,10))
运行结果:
40
100
三、递归函数
代码示例:
package functionDemo
/**
* @author : 蔡政洁
* @email :caizhengjie888@icloud.com
* @date : 2020/8/23
* @time : 7:06 下午
*/
object FunctionDemo3
// 定义一个递归函数
// 实现一个数学上阶乘的功能:3!=1*2*2 4!=4*3!
// 递归函数的返回值类型要指定
val factorial:Int=>Int=(n)=>
if (n<1)
1
else
n * factorial(n-1)
def main(args: Array[String]): Unit =
println(factorial(10))
运行结果:
3628800
四、无参函数
代码示例:
package functionDemo
/**
* @author : 蔡政洁
* @email :caizhengjie888@icloud.com
* @date : 2020/8/23
* @time : 7:13 下午
*/
object FunctionDemo4
// 定义一个无参函数,参数括号不能省略
val getAnswer = () => "success"
def main(args: Array[String]): Unit =
// 无参函数的调用
println(getAnswer())
println(getAnswer)
运行结果:
success
functionDemo.FunctionDemo4$$$Lambda$1/1349393271@3f0ee7cb
五、方法和函数的区别联系
1.方法和函数的定义语法不同
- def 方法名(参数列表):返回类型=方法体
- val 变量 = (函数参数列表)=> 函数体
2.方法一般定义在某个类,特质,或者object中
3.方法可以共享使用所在类的属性
将方法转换为函数
将方法作为参数传给另一个方法或者函数的时候,方法被转化为函数
使用神奇的下划线_
代码示例:
package functionDemo
/**
* @author : 蔡政洁
* @email :caizhengjie888@icloud.com
* @date : 2020/8/23
* @time : 7:45 下午
*/
object FunctionDemo5
def method1(x:Int,y:Int) = x+y
def main(args: Array[String]): Unit =
val res1 = method1(10,10)
// 方法转化为函数 _
val res2 = method1 _
println(res1)
println(res2(20,10))
// 方法作为参数传给另一个方法或者函数,系统会自动把方法转化为函数
运行结果:
20
30
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!
以上是关于Scala深入学习之函数学习的主要内容,如果未能解决你的问题,请参考以下文章