11_Scala函数柯理化惰性函数

1.函数柯里化

复制代码
    def test(a: Int, b: Int): Unit = {
      for (i <- 1 to a) println(i)
      for (i <- 1 to b) println(i)
    }

    var a = 10;
    var b = 100
    test(a, b)

2.构成柯里化

复制代码
**函数柯里化的做法,就是将无关的参数进行分离,可以设定多个参数列表;**
**修改上述test函数如下;**

but

--1.此方式赋值1个仅在给函数对象赋值时候传入即可

--2.柯里化运行的时候,只有两个函数都传入了,菜能执行:也就是说,只赋值1个的函数对象不能()运行,必须参数传够;

复制代码
    //    2.构成柯里化
    def test1(a: Int)( b: Int): Unit = {
      for (i <- 1 to a) println(i)
      for (i <- 1 to b) println(i)
    }

//    修改完成后可以调用一个参数
    val intToUnit:Int => Unit = test1(11)
    intToUnit(1)		//z=执行整体函数
    
    test1(10)(20)

3.递归函数

关于scala中的递归函数需要结果类型,不能让编译器自己推断

复制代码
   def test11(num:Int):Int={
      if (num<1) 1 else num*test11(num-1)
    }

小结:递归函数必须写上函数返回值;

4.惰性函数

惰性函数目的:提高代码效率;

lazy标记的函数表示惰性函数,不需要预先计算他们;

开发过程中,可以将运行复杂的函数标记为惰性函数;

复制代码
object LazyDemo {

  def main(args: Array[String]): Unit = {

    lazy val res = sum(10, 20) // lazy修饰,sum()函数不会被立即执行,要首次被调用之后再执行
    println("================")
    // println("res:"+res)
  }

  def sum(a: Int, b: Int): Int = {
    println("sum执行了")
    a + b
  }
}

object LazyDemo {

  def main(args: Array[String]): Unit = {

    lazy val res = sum(10, 20) // lazy修饰,sum()函数不会被立即执行,要首次被调用之后再执行
    println("================")
    println("res:" + res) //调用sum方法
  }

  def sum(a: Int, b: Int): Int = {
    println("sum执行了")
    a + b
  }
}

输出

复制代码
sum执行了
res:30
代码二:
相关推荐
向往鹰的翱翔2 分钟前
BKY莱德因:5大黑科技逆转时光
大数据·人工智能·科技·生活·健康医疗
小莞尔2 分钟前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
大模型真好玩12 分钟前
深入浅出LangGraph AI Agent智能体开发教程(五)—LangGraph 数据分析助手智能体项目实战
人工智能·python·mcp
测试老哥17 分钟前
Selenium 使用指南
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
我是菜鸟0713号23 分钟前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_25 分钟前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty29 分钟前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再43 分钟前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
Anson Jiang43 分钟前
浏览器标签页管理:使用chrome.tabs API实现新建、切换、抓取内容——Chrome插件开发从入门到精通系列教程06
开发语言·前端·javascript·chrome·ecmascript·chrome devtools·chrome插件
鸿乃江边鸟1 小时前
向量化和列式存储
大数据·sql·向量化