Scala的一等公民和至简原则

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

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

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

  • 方法和函数不建议写 return 关键字,Scala 会使用函数体的最后一行代码作为返回值;
  • 方法的返回值类型如果能够推断出来,那么可以省略,如果有 return 则不能省略返回值类型,必须指定;
  • 因为函数是对象,所以函数有类型,但函数类型可以省略,Scala 编译期可以自动推断类型;
  • 如果方法明确声明了返回值为 Unit,那么即使方法体中有 return 关键字也不起作用;
  • 如果方法的返回值类型为 Unit,可以省略等号 = ;
  • 如果函数的参数类型如果能够推断出来,那么可以省略;
  • 如果方法体或函数体只有一行代码,可以省略花括号 {} ;
  • 如果方法无参,但是定义时声明了 () ,调用时小括号 () 可省可不省;
  • 如果方法无参,但是定义时没有声明 () ,调用时必须省略小括号 () ;
  • 如果不关心名称,只关心逻辑处理,那么函数名可以省略。也就是所谓的匿名函数;
  • 如果匿名函数只有一个参数,小括号 () 和参数类型都能省略,没有参数或参数超过一个的情况下不能省略 ();
  • 如果参数只出现一次,且方法体或函数体没有嵌套使用参数,则参数可以用下划线 _ 来替代。
相关推荐
Bro_cat1 天前
Scala&尾递归解决爆栈问题
开发语言·后端·scala·尾递归优化
看未来捏1 天前
【数字集成电路与系统设计】Chisel/Scala简介与Verilog介绍
scala·verilog·chisel
lisacumt1 天前
【java】scala ExecutorService停止线程池的简单案例
java·scala
Mephisto.java3 天前
【Scala入门学习】Scala的方法和函数
开发语言·学习·scala
汽水配辣条3 天前
windows10通过coursier安装scala
开发语言·后端·scala
武子康3 天前
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
java·大数据·数据库·sql·flink·spark·scala
Mephisto.java3 天前
【Scala入门学习】基本数据类型和变量声明
大数据·hive·kafka·scala·涛思数据·scala3.1.2
武子康5 天前
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
java·大数据·clickhouse·flink·spark·scala
隔着天花板看星星6 天前
Spark-ShuffleWriter-UnsafeShuffleWriter
大数据·分布式·spark·scala
武子康7 天前
大数据-131 - Flink CEP 案例:检测交易活跃用户、超时未交付
java·大数据·flink·spark·scala