Scala的函数的闭包

闭包是:一个函数连同该函数的非局部变量的一个引用环境。

函数和变量的定义要在同一个作用域,函数可以引用已经创建的变量,函数可以同值一样被传递和应用,当执行函数时该函数仍然引用着变量。

Scala 复制代码
object Test888 {
  //把函数当做返回值
  def main(args: Array[String]): Unit = {
    //f是一个函数,它的返回值也是一个函数
    var f=(x:Int)=>{
      //对于fn来说,x就是一个非局部变量,x+fn就会构成一个闭包结构
      var fn=(y:Int)=>x+y
      fn
    }

    var s=f(2)//s是一个函数
    var res=s(100)//102
    var res1=s(88)//?
    println(res,res1)
  }

}
相关推荐
秋名RG2 小时前
Java历代LTS版本新特性详解(代码增强版)
java·开发语言·python
李少兄2 小时前
深度剖析 Hutool ObjectUtil
java·开发语言
魏码不凡2 小时前
Go 编译报错:undefined: webp.Encode 问题排查与解决
开发语言·后端·golang
27669582922 小时前
youdao/有道翻译APP 算法协议分析
开发语言·前端·python·sign·youdao·有道翻译app算法·有道app协议请求
励志不掉头发的内向程序员2 小时前
【从零写一个CAD 04】中键拖动平移:抓住一个点,让它一直待在鼠标底下
开发语言·c++·qt·学习·系统架构·计算机外设
tachibana24 小时前
与其他语言相比,使用 Go 有什么好处?
开发语言·后端·golang·go
阿俊-全栈开发8 小时前
LikeShop 单商户SaaS商城分销模块二开:佣金计算与结算逻辑实现
java·开发语言·微服务·likeshop·likeshop开源商城·likeshop多商户
m0_3807438711 小时前
C++中的freopen的用法实例详解
开发语言·c++
Escalating_xu12 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
jimy112 小时前
polymorph.cpp里面的“析构函数、智能指针”问题
开发语言·c++