Scala的一等公民和至简原则

2023-11-20 16:52
文章标签 scala 原则 一等 公民

本文主要是介绍Scala的一等公民和至简原则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. Scala 中,函数是一等公民具体体现在哪里

  • Scala 混合了面向对象特性和函数式的特性
  • 函数可以作为值传递:函数可以作为参数传递给其他函数,也可以作为返回值返回给其他函数
  • 函数可以赋值给变量:和其他数据类型⼀样,函数也可以赋值给变量,变量的类型就是函数的类型
  • 函数可以嵌套定义:在函数内部可以定义另外⼀个函数,内部函数可以定义外部函数的变量
  • Scala支持匿名函数,可以直接定义并传递匿名函数

2. 说说 Scala 函数的至简原则

  • 方法和函数不建议写 return 关键字,Scala 会使用函数体的最后一行代码作为返回值;
  • 方法的返回值类型如果能够推断出来,那么可以省略,如果有 return 则不能省略返回值类型,必须指定;
  • 因为函数是对象,所以函数有类型,但函数类型可以省略,Scala 编译期可以自动推断类型;
  • 如果方法明确声明了返回值为 Unit,那么即使方法体中有 return 关键字也不起作用;
  • 如果方法的返回值类型为 Unit,可以省略等号 = ;
  • 如果函数的参数类型如果能够推断出来,那么可以省略;
  • 如果方法体或函数体只有一行代码,可以省略花括号 {} ;
  • 如果方法无参,但是定义时声明了 () ,调用时小括号 () 可省可不省;
  • 如果方法无参,但是定义时没有声明 () ,调用时必须省略小括号 () ;
  • 如果不关心名称,只关心逻辑处理,那么函数名可以省略。也就是所谓的匿名函数;
  • 如果匿名函数只有一个参数,小括号 () 和参数类型都能省略,没有参数或参数超过一个的情况下不能省略 ();
  • 如果参数只出现一次,且方法体或函数体没有嵌套使用参数,则参数可以用下划线 _ 来替代。

这篇关于Scala的一等公民和至简原则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/396059

相关文章

JVM内存调优原则及几种JVM内存调优方法

JVM内存调优原则及几种JVM内存调优方法 1、堆大小设置。 2、回收器选择。   1、在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。   2、对JVM内存的系统级的调优主要的目的是减少

水处理过滤器运行特性及选择原则浅谈

过滤属于流体的净化过程中不可缺的处理环节,主要用于去除流体中的颗粒物或其他悬浮物。水处理过滤器的原理是利用有孔介质,从流体中去除污染物,使流体达到所需的洁净度水平。         水处理过滤器的滤壁是有一定厚度的,也就是说过滤器材具有深度,以“弯曲通 道”的形式对去除污染物起到了辅助作用。过滤器是除去液体中少量固体颗粒的设备,当流体进入置有一定规格滤网的滤筒后,其杂质被阻挡,而

【scala 安装错误】错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner

错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner 原因: Scala安装路径中包含空格。 解决办法:scala 不要安装在E:\Program Files 这种有空格的目录下,简直坑

重写equals和hashCode的原则规范

当符合以下条件时不需要重写equals方法:     1.     一个类的每一个实例本质上都是唯一的。     2.     不关心一个类是否提供了“逻辑相等”的测试功能     3.     超类已经改写了equals方法,并且从超类继承过来的行为对于子类也是合适的。     4.     一个类时私有的或者是package私有的,并且可以确定它的equals方法永远不会被调用。(这

职场关系课:职场上的基本原则(安全原则、进步原则、收益原则、逃生舱原则)

文章目录 引言安全原则进步原则收益原则逃生舱原则 引言 职场上的王者,身体里都应该有三个灵魂: 一个文臣,谨小慎微,考虑风险; 一个武将,积极努力,谋求胜利; 一个商人,精打细算,心中有数。 安全原则 工作安全:保住自己的工作和位置信用安全:保住个人的信用,如果领导看到了你的信用受损,你和领导的关系可能会持续恶化。人身安全:有的时候你会遇到偏执的人,要及时和

Scala模式匹配下提取器构造

示例代码: object :> {def unapply[A] (list:List[A]) = {Some( (list.init,list.last) )}}object Extractor_Advanced {def main(args: Array[String]): Unit = {(1 to 9).toList match{ case _ :> 9 => println(

从spark源码的角度思考scala中的模式匹配

1.scala中模式匹配 2.spark源码中的模式匹配思考 spark中master会收到worker发过来的akka的消息, 此消息是case class即(Master.class中): case class RegisterWorker(id:String,host:String,port:Int,cores:Int,memory:Int,webUiPort:int

Scala界面事件处理

示例代码: import scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scala.swing.BoxPanelimpo

Scala界面Panel、Layout初探

示例代码: package com.dt.scala.guiimport scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scal

scala界面GUI编程实战初步了解

示例代码: import scala.swing._//SimpleSwingApplication继承自SwingApplication类(此类中有main方法,因此可以运行显示界面)object Hello_GUI extends SimpleSwingApplication {def top = new MainFrame{ //顶级容器title = "Hello GUI"co