• 1.return可以省略,Scala会使用函数体的最后一行代码作为返回值
  • 2.如果函数体只有一行代码,可以省略花括号
  • 3.返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
  • 4.如果有return,则不能省略返回值类型,必须指定
  • 5.如果函数明确声明unit,那么即使函数体中使用return关键字也不起作用
  • 6.Scala如果期望是无返回值类型,可以省略等号 这种形式称为过程
  • 7.如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
  • 8.如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
  • 9.如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略

代码示例

object Scala05_TestFun_review {
def main(args: Array[String]): Unit = {
/*
//正常定义函数
def f0(name:String): String ={
return name
}
println(f0("atguigu"))
//(1)return可以省略,Scala会使用函数体的最后一行代码作为返回值
def f1(name:String): String ={
name
}
println(f1("atguigu")) //(2)如果函数体只有一行代码,可以省略花括号
def f2(name:String): String = name
println(f2("atguigu")) //(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
def f3(name:String)= name
println(f3("atguigu")) //(4)如果有return,则不能省略返回值类型,必须指定
def f4(name:String) ={
return name
} //(5)如果函数明确声明unit,那么即使函数体中使用return关键字也不起作用
def f5(name:String): Unit ={
return name
}
println(f5("atguigu")) //(6)Scala如果期望是无返回值类型,可以省略等号 这种形式称为过程
def f6(name:String){
println(name)
}
f6("banzhang") //(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
def f7(): Unit ={
println("jingjing")
}
f7
f7() //(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
def f8: Unit ={
println("jingjing")
}
//f8()
f8
*/ //(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略
// 1.扩展f9的功能 2.具体扩展的功能是通过fun函数传递,很灵活
def f9(fun:(String)=>Unit): Unit ={
fun("jingjing")
} //def f10(s:String): Unit ={
// println(s)
//}
//f9(f10) //匿名函数 :没有名字的函数,通过lambda表达式实现 (参数)=>{函数体}
//f9((s:String)=>{println(s)}) //(1)参数的类型可以省略,会根据形参进行自动的推导
//f9((s)=>{println(s)}) //(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过1的永远不能省略圆括号。
//f9(s =>{println(s)}) //(3)匿名函数如果只有一行,则大括号也可以省略
//f9(s =>println(s)) //(4)如果参数只出现一次,则参数省略且后面参数可以用_代替
//f9(println(_)) // (5) 如果可以推断出,println是一个函数体,而不是调用语句,那么(_)可以省
// f9(println) //反推导 f9((s:String)=>println(s)) //加深大家理解
//定义一个函数,接受一个函数类型的参数,该函数类型有两个参数
def f11(fun:(Int,Int)=>Int):Int={
fun(1,2)
} //println(f11((x:Int,y:Int)=>{x + y}))
//println(f11((x,y)=>x + y))
println(f11(_ + _)) }
}

scala函数至简原则是什么?的更多相关文章

  1. Scala函数高级篇

    一.匿名函数 没有名字的函数就是匿名函数,格式:(x:Int)=>{函数体} x:表示输入参数类型:Int:表示输入参数类型:函数体:表示具体代码逻辑 传递匿名函数至简原则: 参数的类型可以省略 ...

  2. Scala 函数(五)

    函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...

  3. Scala:函数和闭包

    http://blog.csdn.net/pipisorry/article/details/52902271 Scala函数 Scala 有函数和方法,二者在语义上的区别很小.Scala 方法是类的 ...

  4. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  5. Spark记录-Scala函数

    Scala函数 Scala有函数和方法. Scala方法是一个具有名称和签名的类的一部分. Scala中的函数是一个可以分配给变量的完整对象. 函数定义可以出现在源文件中的任何位置. 不带参数的函数 ...

  6. Spark记录-Scala函数与闭包

    函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...

  7. [scala] scala 函数 (⑦)

    1.scala 函数定义 2.scala 高阶函数 3.匿名函数 4.柯里化 import scala.math._ /** * @author xwolf * @date 2017-04-24 9: ...

  8. ORACLE时间函数(SYSDATE)简析

    ORACLE时间函数(SYSDATE)简析 分类: 原文地址:ORACLE时间函数(SYSDATE)简析 作者:skylway 加法 select sysdate,add_months(sysdate ...

  9. Scala函数字面量简化写法

    Scala提供了多种方法来简化函数字面量中多余的部分,比如前面例子中filter方法中使用的函数字面量,完整的写法如下: (x :Int ) => x +1 首先可以省略到参数的类型,Scala ...

随机推荐

  1. C语言--指针数组大小

    #include <stdio.h> #include <string.h> int main(void) { char *str[3]={ "Hello,thisi ...

  2. IP路由__动态路由

    1.使用协议来查找网络并更新路由表的配置,就是动态路由.它比使用静态或默认路由方便,但它需要一定的路由器CPU处理时间和网络链接带宽.路由协议定义了路由器与相邻路由器通信时所使用的一组规则. 在互联网 ...

  3. SOLID:面向对象设计的五个基本原则

    在程序设计领域,SOLID 是由罗伯特·C·马丁在 21 世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则.当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软 ...

  4. 2019牛客暑期多校训练营(第七场)H.Pair(数位dp)

    题意:给你三个数A,B,C 现在要你找到满足  A and B >C 或者 A 异或 B < C 的对数. 思路:我们可以走对立面 把既满足 A and B <= C 也满足 A 异 ...

  5. 高斯消元初步(Gauss算法)

    Gauss算法,称为高斯消元算法,用来解决n元一次方程,在解决线性方程问题起着重要作用. 简述 运用高斯消元的方法,我们可以在O(n3)的时间求出n元线性方程,但是由于时间复杂度的原因,请注意题目数据 ...

  6. hdu5489 Removed Interval

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission ...

  7. SpringBoot简单整合redis

    Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...

  8. MySQL 主从复制(上)

    目录 主从复制前提 主从复制原理 涉及的文件 & 线程 Master 主库 Slave 从库 主从复制的搭建 主库配置 配置 /etc/my.cnf 建立专用复制用户 查看 Binlog 信息 ...

  9. Linux命令:sysctl

    sysctl命令用于运行时配置或查看内核参数,这些参数位于/proc/sys目录下.可以使用sysctl命令来设置或重新设置网络联网功能,如:IP转发.IP碎片去除以及源路由检查等.用户可以编辑/et ...

  10. servlet相关知识点

    一.servlet的生命周期 Servlet(Sever Applet),全称是Java Servlet,是用java编写的服务器程序.Servlet是指任何实现了这个Servlet接口的类. ser ...