Scala 函数式编程的重要部分总结

本文总结了Scala函数式编程的至简原则,包括自动推断返回值类型、省略花括号、参数列表和返回值类型等。同时介绍了函数作为变量、参数和返回值的用法,探讨了匿名函数的简化技巧及其在实际编程中的应用。通过实例展示了如何将函数作为参数传递,以及如何将函数作为返回值,强调了在不同场景下的简化规则和注意事项。
摘要由CSDN通过智能技术生成
一、至简原则
 
因为所有的表达式都有返回值(最后一行当返回值)
1)函数可以自动将最后一行代码的结果作为函数的返回值。
可以省略return.能推断最后一行代码作为返回值
 
2)如果返回值能确定,返回值的类型其实也可以确定。那么返回值类型就可以省略
场景1:  String 是自动提示的
场景2:自动推断返回值类型。因为Scala是强类型语言,在运行之前就得知道返回值类型。
 
 
要么返回10 就是int
要么就不返回是Unit
就得找通用的AnyVal
 
 
 
3)花括号可以省略。如果函数逻辑代码只有一行,那么大括号可以省略
 
 
4)如果参数列表没有参数。小括号可以省略
如果函数声明时省略了参数列表,那么在 调用的时候也不能加参数列表
 
在简化过程  val  和def  就体现出功能了。靠关键字就可以区分函数和变量了
 
5)如果函数的参数列表中没有参数,那么在调用该方法的时候可以不加()
直接  fun10 就是调用的意思  和使用fun10 () 的结果一样
 
 
6)Unit  和return 一起使用的时候没有报错  但是结果是()。代表不需要返回值
如果函数明确没有返回值,那么函数体中的return 关键字不起作用了
 
函数体中如果有return ,那么返回值类型是不能省略的
不想声明返回值类型,又不想让return 关键字起作用。此时可以省略等号。
Scala 中声明函数没有返回值,代表只有输入没有输出,这样的函数 叫做过程函数,因为没有结果
可以连通返回类型和等号一起省略。
7) 当不关心函数的名称的时候(只关心逻辑的时候),函数名和def 都可以省略
 
去掉def 和名字
 
相当于
 
这样有问题,运行会报错
这时候告诉Scala是一个参数列表,不是Unit 的一个对象,此时需要加一个箭头
 
箭头表示左边是参数,右边是函数体
():Unit 的一个对象叫做小括号
这样的函数叫做匿名函数。JDK1.8借鉴的就是
匿名函数的方式:()=>{}
=> 左边是参数列表 
=>右边是方法体
怎么调用这个匿名函数???没名字怎么调用?
想要调用就得把它给别人,需要赋值给其他的变量调用。
此时赋值给f 变量
  此时把函数给一个变量
  和上面的类比
调用 f()   f是名字,括号是参数列表
运行结果
 
 
 
 
 
二、函数作为变量:
在函数传递给变量过程的注意事项:
1、函数结果传递给变量(函数的结果赋值给变量)
此时可以查看到f变量的类型是String,和函数fun10的返回值类型刚好一样 
 
上面fun10 和fun10()  赋值给f 结果是一样的
 
2、将函数整体赋值给变量(两种方式)
1)将函数整体赋值给变量的 第一种方式
 
上面可以查看到变量的ff 类型已经变成了函数类型 ()=>String, 代表函数整体已经赋值给了ff 变量
val 变量=函数名 _
此时ff 已经变成了函数,注意在调用ff 函数的时候,是需要在ff 后面加上小括号的  
调用函数的语法: ff()
调用ff:注意调用函数( 变量 )的时候一定要加()否则 打印结果如下
当变量后没加小括号的打印结果:
 
 
对比调用原始函数,原始函数如果没有参数,可以直接 函数名      进行调用,也可以参数名小括号    进行调用
然而在函数通过变量来调用的时候,变量(函数)后是需要加小括号的。
当变量后加了小括号后的打印结果:
 
 
2)将函数整体赋值给变量的 第二种方式
 
小案例:
 
 
三、函数作为参数
函数式编程普通函数作为参数的总结
 
object Scala_Function1 {
def main ( args: Array [ String ]) : Unit = {
 
// TODO: 函数作为参数,传递给其他的函数 ( 非匿名函数 )
// 封装好的 逻辑 給函 可以 行另外一段 逻辑 。把 逻辑传过来 ,在函 这个逻辑
def f1 ( i: Int ) : Int = {
i * 2
}
 
def tes1 ( f: Int => Int ) : Int = {
f ( 10 )
}
 
val f = f1 _
println ( tes1 ( f ))
/*
整体的 逻辑 如下(非匿名函 为参数 ):
为参数 首先需要 两个
1 )第一 是普通的函
自己定 逻辑
例如 f1 int 型的 出一 int 型的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值