Scala函数至简原则

news2024/10/7 16:26:30

一、Scala中的函数基础知识

1、基本语法
在这里插入图片描述
【函数和方法的区别】
【核心概念】
(1)为完成某一功能的程序语句的集合,称为函数。
(2)类中的函数称之方法。

【案例实操】
(1)Scala 语言可以在任何的语法结构中声明任何的语法
(2)函数没有重载和重写的概念;方法可以进行重载和重写
(3)Scala 中函数可以嵌套定义

【函数参数】
(1)可变参数
(2)如果参数列表中存在多个参数,那么可变参数一般放置在最后
(3)参数默认值,一般将有默认值的参数放置在参数列表的后面
(4)带名参数

二、函数至简原则

函数至简原则:能省则省
【至简原则细节】
(1)return 可以省略,Scala 会使用函数体的最后一行代码作为返回值

(2)如果函数体只有一行代码,可以省略花括号

(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)

(4)如果有 return,则不能省略返回值类型,必须指定

(5)如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用

(6)Scala 如果期望是无返回值类型,可以省略等号

(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加

(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略

(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略

三、匿名函数

【匿名函数】
没有名字的函数就是匿名函数。
(x:Int)=>{函数体} x:表示输入参数类型;Int:表示输入参数类型;函数体:表示具体代码逻辑

【传递匿名函数至简原则】
传递匿名函数至简原则:
(1)参数的类型可以省略,会根据形参进行自动的推导

(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过 1 的永远不能省略圆括号。

(3)匿名函数如果只有一行,则大括号也可以省略

(4)如果参数只出现一次,则参数省略且后面参数可以用_代替

【函数闭包和柯里化】
闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包
函数柯里化:把一个参数列表的多个参数,变成多个参数列表。

四、高阶函数

1、函数可以作为值进行传递
2、函数可以作为参数进行传递
3、函数可以作为函数返回值返回

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

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

相关文章

THP Maleimide,1314929-99-1,THP-Mal凯新生物双功能螯合剂

一、产品描述: THP-Mal 双功能螯合剂。肽和抗体标记。对SH基团的特异性反应,如半胱氨酸。炔烃马来酰亚胺是一种双功能接头试剂,可将末端炔烃连接到各种含硫醇分子,例如含有半胱氨酸残基的蛋白质,然后可以通过铜催化的…

2022腾讯全球数字生态大会【存储专场】它来了|预约有礼

它来了!它来了! 2022腾讯全球数字生态大会【存储专场】它来了! 作为腾讯集团产业互联网规格最高、规模最大、覆盖面最广的年度盛会 今年存储专场与您一起探讨 分布式高性能存储与数据分析处理的科技创新和最新成果 存储会场六大亮点&…

java 基于 SpringMVC+Mybaties+ Html5 + Vue 前后端分离 房地产管理系统 的 设计与实现

一.项目介绍 本系统分为 两大块 前端 和 后端 (前后端分离) 角色分为三类: 管理员 销售 以及 普通用户 前端模块有:首页、房屋中心、关于大厦、新闻资讯、个人中心、后台管理、客服售后 其中个人中心:个人中心、我的收…

1.线性代数基础

1.矩阵 2. 特殊矩阵 正交矩阵 AATE(E为单位矩阵,AT表示“矩阵A的转置矩阵”。)或ATAE,则n阶实矩阵A称为正交矩阵 正交矩阵有如下性质: A是正交矩阵,AT也是正交矩阵A的各行是单位向量且两两正交&#xff0…

Google Earth Engine(GEE)——NASA NEX GDPDDP CMIP5数据集中的问题

问题: 我正在使用 NASA NEX GDPDDP CMIP5 集合。我注意到模型“GFDL-CM3”似乎缺少场景 RCP4.5 的 2096-2099 年。 您可以通过此脚本查看丢失的图像,并与模型 ACCESS1-0 进行比较: https://code.earthengine.google.com/7b505c81a59f10ba5…

[附源码]Python计算机毕业设计Django的高校车辆租赁管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

学习笔记11月27日

Infant Brain Deformable Registration Using Global and Local Label-Driven Deep Regression Learning 文章来源:谷歌学术 一、摘要 婴儿大脑磁共振(MR)图像的可变形配准具有挑战性,因为:(1)这些纵向图像存在较大的…

【MySQL】读写分离主从复制

1. 原理篇 1.1 读写分离问题场景: 高并发场景,读数据操作远高于写数据操作 —— 为了实现读写分离,我们使用数据库的主从复制: 1.2 主从复制: 实现主从复制的流程如下: MySQL 的主从复制实现机制如下&am…

shell基本命令

shell基本命令 echo: -n:取消输出后行末的换行符号 -e:支持反斜线控制的字符转换 echo -e "\a":输出警告声 echo -e "\e[1;31m abcd \e[0m":输出带颜色的信息bash执行方法: 给bash文件添加执行…

《龙湖地产》企业门户网站前端设计(Html,CSS,JavaScript,jQuery)

目 录 引言 1 一、企业网站建设方案 2 (一)搭建网站的必要性和可行性 2 (二)网站建设的目的 2 (三)网站设计原则 2 二、企业网站开发工具的选择和介绍 4 (一) HTML概述 4 &#xff0…

上市公司共同机构所有权数据-附顶刊《管理世界》数据应用示例

1、数据来源:见数据说明文件 2、时间跨度:2003-2020 3、区域范围:所有上海、深圳证券交易所A股主板、中小企业板、科创板、创业板上市公司 4、指标说明: 具体计算方式详见分享文件夹文本文档 描述性统计如下: 部分…

Docker容器学习笔记(看了狂神视频)

狂神的笔记更加系统详细,推荐大家可以去看狂神的视频教程和笔记。我这里仅根据我自己的需求写的笔记,对于需要快速掌握docker的使用的朋友可以参考学习。 Docker 背景需求 之前,开发一套环境,上线一套环境,环境配置十…

STM32滴答定时器SysTick精准延时,兼容HAL库和标准库

STM32手册资料下载:STM32资料Github链接;STM32资料Gitee链接; 注意:Github是国外的,要翻墙,Gitee是国内的,无需翻墙。 目录 滴答定时器的功能 模块化思想 什么叫做模块化 如何利用keil实现…

用 Wireshark 让你看见 TCP 到底是什么样!

本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 莫听穿林打叶声,何妨吟啸且徐行。 前言 当你看到这篇文章时,你只能看到已经渲染好的文字和图像,而网络数据的交…

rk3588硬件构成-rock5b

前言 rk3588是瑞芯微的一套新的arm64的板子,上一代用的比较多的是rk3399,新的硬件设备比之前更强大,接口更多,本系列就是介绍相关的硬件软件的一些资料,后面会根据不同的使用进行分篇的介绍 很多资料官网有提供&…

深度学习与总结JVM专辑(四):类文件结构(图文+代码)

类文件结构概述无关性的基石Class类文件结构前言字节码文件结构属性魔数与Class文件的版本号魔数版本号常量池反编译软件访问标志类索引,父类索引与接口索引集合字段表集合方法表集合属性表集合Code属性attribute_name_indexmax_stackmax_localscode_length和codeja…

视频卡顿率测试方法

一、背景介绍 视频流畅性测试是视频质量评估一个重要的指标。一般的获取方法是在渲染前增加统计信息。不过这种方法需要增加额外工作量,并且也不是用户直接的体验数据。 这里介绍一种基于时域运动指标/平均相关位置像素差(TI:temporal info…

Android Camera性能分析 第24讲 录像Buffer Path帧率统计

​ 本讲是Android Camera性能分析专题的第24讲,我们介绍录像Buffer Path帧率统计,包括如下内容: 从GraphicBufferSource统计录像Buffer Path帧率Video Codec角度统计视频帧率Video Codec2角度统计视频帧率 视频在线观看: 极客笔…

Nacos Discovery--服务治理

目录 一,服务治理介绍 二,nacos简介 nacos实战入门 搭建nacos环境 第1步: 安装nacos 第2步: 启动nacos 第3步: 访问nacos 将商品微服务注册到nacos 1 在shop-common模块的pom.xml中添加nacos的依赖 注意在父模块中是否导入了alibaba 2 在主类上添加E…

Altium Designer智能粘贴命令的使用教程

怎么样等间距的复制很多过孔?怎么带网络的复制走线?又或者是怎么样把元件的位号及网络从当前的这个PCB调用到另一个PCB板中呢?PCB设计当中经常会遇到这些问题,可以使用特殊粘贴也可以称为智能粘贴法来实现。 1、选中需要复制的元素…