scala控制抽象之传名参数(名调用)

news2024/11/18 14:02:22

我们在用scala定义函数时,一般参数都是各种类型的值,这是常见的值调用
但偶尔也有需要把代码块作为参数传入的情况(名调用)
匿名函数经常可以作为函数的参数传入,非匿名函数也行(函数作为返回值返回就更常见了),下面是演示

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

    // 传名参数
    // 这里表示a的参数类型为一个返回值为Int类型的代码块
    def f1(a: => Int): Unit = {
      println("result: " + a)
      println("result: " + a)
    }

    def f2(a: Int)(b: Int): Int = a + b

    f1(f2(2)(3))
  }
}

直接将一个Int类型的数字作为代码块传入当然也是可以的,但注意上面作为参数传入f1的不是f2(2)(3)的int类型结果,而是传入了完整的代码块

看看下面的代码就好理解了

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

    // 传名参数
    // 这里表示a的参数类型为一个返回值为Int类型的代码块
    def f1(a: => Int): Unit = {
      println("result: " + a)
    }

    def f2(): Int = {
      println("这一个代码块")
      23
    }
	//如果传入的不是代码块只是一个int类型的返回值,则不会打印f2中的字符串	
    f1(f2())
  }
}

在这里插入图片描述

为什么把这么简单的东西叫做抽象控制呢?因为这里f2的执行已经被f1给控制了,a在f1中出现多少次,f2就会被调用多少次,执行的时机也被f1控制了

等同于将f2调用的控制权限抽象出来,交给了f1中的a,这就是控制抽象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

都说软件测试不行了,真的是这样吗?

最近在各大平台经常会听到大家说这样的话: 现在公司都不招人,测试员根本找不到工作 简历石沉大海、面试机会也没有,软件测试是不是不行了 软件测试行情到底如何? 作为软件员在如今的情况下又该怎么做? 其实现在所…

ai生成文章 免费-自动生成文章

原创文章自动生成器 随着人工智能技术的快速发展,越来越多的创新产品得以应用到我们的日常工作中。其中,原创文章自动生成器是一种高效、智能的工具,它可以帮助企业快速生成符合要求的优质文章。在本文中,我将向您介绍原创文章自…

数据结构算法leetcode刷题练习(1)

给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一…

4.2 插值多项式的求法

学习目标: 我会采取以下几个步骤来学习插值多项式的求法: 学习预备知识:插值多项式的求法需要掌握一定的数学知识,例如多项式函数的定义、导数、微积分、线性代数等等。因此,学习插值多项式的求法前,需要先…

掘金AIGC时代,开发者更需要什么样的大模型?

当前,火热的AI大模型领域需要一些冷思考。 自去年年底ChatGPT掀起一轮AIGC热潮以来,国内科技企业扎堆发布大模型和类ChatGPT产品。截止2023年4月,已公开宣布发布或即将发布AI大模型的企业达数十家。多模态大模型的能力不断迭代,市…

2023年自动化测试真有那么重要吗?内卷严重,测试技能水涨船高......

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 学习自动化测试有…

应用现代化语境下的技术重塑:谁在帮助企业自我革命?

文丨智能相对论 作者丨沈浪 在数字经济时代,应用现代化正在成为一个共识。在IDC发布的《IDC FutureScape:全球云计算2022年预测-中国启示》报告中,应用现代化就位居首位。同时,IDC也预测,到2025年,数字经…

更新 WinForms | InitializeComponent 的现代代码生成

当你使用 Visual Studio 中的 WinForms Designer 来创建一个 WinForms 表单或用户控件时,它并没有像 XML 或 HTML 那样的特殊定义或文件格式来表示用户界面。从一开始,WinForms 使用的唯一格式就是程序代码。在 WinForms Visual Basic 项目中定义的表单或…

ONES 联合中国信通院发布《中国企业软件研发管理白皮书》

4月20日,由 ONES 与中国信通院联合发起的《中国企业软件研发管理白皮书》发布会暨「软件质效沙龙一北京站」正式举行。发布会上,ONES 与中国信通院云计算与大数据研究所的各位领导、行业专家及众多软件从业者一起,聚焦研发管理热点动态&#…

【hello C++】内存管理

目录 前言: 1. C/C内存分布 2. C语言动态内存管理方式 3. C内存管理方式 3.1 new / delete 操作内置类型 3.2 new和delete操作自定义类型 4. operator new与operator delete函数 4.1 operator new与operator delete函数 5. new和delete的实现原理 5.1 内置类型 5.2…

杭州乐芯CNC 机器人采集方法汇总

杭州乐芯CNC数据采集方法及支持的系统 一,杭州乐芯CNC 机器人采集方法汇总 1,采用SDK开发包采集,比如发那科 FANUC \三菱 、海德汉、大隈OKUMA(O-API)、华中数控、凯恩帝、沙迪克、牧野电火花、台湾宝元、上海来钠克…

怎么把avi文件转换成mp4视频格式,4个高能方法

怎么把avi文件转换成mp4视频格式? 当您下载到avi格式的视频文件时,您可能会选择将其转换为MP4格式的文件。 avi是一种由微软开发的多媒体容器格式,尽管现在已经被认为是老旧的技术,但由于其简单易懂的开发API和Windows的通用性&am…

【CSS3】CSS3 2D 转换 - rotate 旋转 ② ( 使用 rotate 旋转绘制三角形 )

文章目录 一、使用 rotate 旋转绘制三角形二、代码示例 一、使用 rotate 旋转绘制三角形 使用 rotate 旋转绘制三角形 的原理 : 先绘制正方形 , 为该正方形设置边框 , 只设置 右侧 和 下方的 边框 , div {width: 40px;height: 40px;border-right: 2px solid black;border-bott…

tmux---linux终端复用器使用

tmux---linux终端复用器使用 tmux 介绍安装使用tmux会话管理新建会话分离会话接入会话杀死会话切换会话重命名会话 窗格操作划分窗格移动光标交换窗格位置窗格快捷键 tmux 介绍 命令行的典型使用方式是,打开一个终端窗口(terminal window,以…

发令枪音效芯片,语音提示ic

发令枪属于管制物品,只能在运动员训练或比赛时使用,其余时间段不能使用,更不能在非比赛场地公众场合使用。在径赛、游泳比赛等开始时,主要是用来发出声音信号的器械,形状像手枪。 电子发令枪,采用电子元器…

Baklib最佳实践:如何设计符合用户需求的FAQ页面?

在当今互联网时代,随着信息量的不断增加和用户信息获取方式的多样化,越来越多的公司、组织和个人开始创建自己的FAQ页面。作为一个企业或组织的“门面”,FAQ页面对于提升品牌形象、提高服务质量以及吸引潜在客户等方面都起着至关重要的作用。…

传统机器学习(三)聚类算法K-means(一)

传统机器学习(三)聚类算法K-means(一) 一、聚类算法K-means初识 1.1 算法概述 K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means基于欧式距离认为两个目标距离越近,相似度越大。 1.…

详解C语言string.h中常见的14个库函数(二)

本篇博客继续讲解string.h中的库函数。在上一篇博客中,我介绍了strlen, strcpy, strcat, strcmp这4个字符串操作函数,本篇博客会继续介绍strncpy, strncat, strncmp这3个类似的函数。 strcpy, strcat, strcmp这3个函数是长度不受限制的字符串操作函数&a…

ubuntu安装V2board宝塔面板教程

ubuntu安装V2board宝塔面板教程 运行环境:ubuntu-20.04 搭建宝塔web页面环境 切到linux服务器命令行 在用户目录下创建BT目录,进入BT目录 在BT目录下执行命令 sudo wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo sh install.sh…

考虑梯水电站群的水火电节能调度(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…