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

 1 package com.atguigu.function
2
3 object TestFunction {
4 def main(args: Array[String]): Unit = {
5 // (0)函数标准写法
6 def f( s : String ): String = {
7 return s + " jinlian"
8 }
9 println(f("Hello"))
10 // 至简原则:能省则省
11 //(1) return 可以省略,Scala 会使用函数体的最后一行代码作为返回值
12 def f1( s : String ): String = {
13 s + " jinlian"
14 }
15 println(f1("Hello"))
16 //(2)如果函数体只有一行代码,可以省略花括号 类似数学上的f(x)=x+1
17 def f2(s:String):String = s + " jinlian"
18 //(3)返回值类型如果能够推断出来且省略了return,那么可以省略返回值类型的指定(:和返回值类型一起省略)
19 def f3( s : String ) =
20 {
21 s + " jinlian"
22 }
23 println(f3("Hello3"))
24 //(4)如果有 return,则不能省略返回值类型,必须指定。
25 def f4() :String = {
26 return "ximenqing4"
27 }
28 println(f4())
29 //(5)如果函数明确声明 Unit,那么即使函数体中使用 return 关键字也不起作用
30 def f5(): Unit = {
31 return "dalang5"
32 }
33 println(f5())
34 //(6)Scala 如果期望是无返回值类型,可以省略等号,将无返回值的函数称之为过程
35 def f6() {
36 "dalang6"
37 }
38 println(f6())
39 //(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
40 def f7() = "dalang7"
41 println(f7())
42 println(f7)
43 //(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
44 def f8 = "dalang"
45 //println(f8())
46 println(f8)
47 //(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略
48 def f9 = (x:String)=>{println("wusong")}
49 def f10(f:String=>Unit) = {
50 f("")
51 }
52 f10(f9)
53 println(f10((x:String)=>{println("wusong")}))
54 //匿名函数 :没有名字的函数,通过lambda表达式实现 (参数)=>{函数体}
55
56 //f9((s:String)=>{println(s)})
57 //(1)参数的类型可以省略,会根据形参进行自动的推导
58
59 //f9((s)=>{println(s)})
60 //(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过1的永远不能省略圆括号。
61
62 //f9(s =>{println(s)})
63 //(3)匿名函数如果只有一行,则大括号也可以省略
64
65 //f9(s =>println(s))
66 //(4)如果参数只出现一次,则参数省略且后面参数可以用_代替
67
68 //f9(println(_))
69 // (5) 如果可以推断出,println是一个函数体,而不是调用语句,那么(_)可以省
70
71 // f9(println)
72 //反推导 f9((s:String)=>println(s))
73 //加深大家理解
74
75 //定义一个函数,接受一个函数类型的参数,该函数类型有两个参数
76
77 def f11(fun:(Int,Int)=>Int):Int={
78
79 fun(1,2)
80
81 }
82 //println(f11((x:Int,y:Int)=>{x + y}))
83
84 //println(f11((x,y)=>x + y))
85
86 println(f11(_ + _))
87 }
88 }

Scala 函数至简原则的更多相关文章

  1. scala函数至简原则是什么?

    1.return可以省略,Scala会使用函数体的最后一行代码作为返回值 2.如果函数体只有一行代码,可以省略花括号 3.返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略) 4.如果有 ...

  2. Scala函数高级篇

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

  3. Scala 函数(五)

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

  4. Scala:函数和闭包

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

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

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

  6. Spark记录-Scala函数

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

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

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

  8. [scala] scala 函数 (⑦)

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

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

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

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

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

随机推荐

  1. Linux Ubuntu 遇到的一些问题

    Ubuntu 国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/# 1. 安装一些常用的软件时,需要下载 amd.deb 类型的包,并使用下面命令安装 sudo ...

  2. win32 - 创建带有标准阴影的无边框窗口

    这个框框好像删不掉,就先放这边吧...   #define WIN32_LEAN_AND_MEAN #include <unknwn.h> #include <windows.h&g ...

  3. 构建SatelliteRpc:基于Kestrel的RPC框架(整体设计篇)

    背景 之前在.NET 性能优化群内交流时,我们发现很多朋友对于高性能网络框架有需求,需要创建自己的消息服务器.游戏服务器或者物联网网关.但是大多数小伙伴只知道 DotNetty,虽然 DotNetty ...

  4. Qt开发Activex笔记(三):C#调用Qt开发的Activex控件

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789727 长期持续带来更多项目与技术分享 ...

  5. django中如何处理事务

    生成订单时,一次性生成多条数据记录或者一次性操作多个模型,都有可能产生中途报错的情况,所以需要在生成订单时保证多个数据操作的原子性. 事务 在完成一个整体功能时,操作到了多个表数据,或者同一个表的多条 ...

  6. 内存管理机制 & 垃圾回收机制

    内存管理机制 python是由c开发出来的. 看源码分析,下载python安装包tar包 解压后主要看Include和Objects这两个文件夹 # 分析 在创建对象时,如 v = 0.3 源码内部: ...

  7. java个人博客

    效果浏览 首页 详情页 Aboutme 后台管理 管理/添加博客 添加分类 管理员管理 友情链接 访问地址 前台地址http://localhost 后台地址:http://localhost/adm ...

  8. 【开发工具】Linux 服务器 Shell 脚本简单入门

    记录一下学习Shell编程的关键知识点,使用最通俗简洁的语句,让阅读者能快速上手Shell脚本的编写 1.什么是Shell? Shell是一种常用于服务器运维的脚本语言.众所周知,脚本语言不需要编译器 ...

  9. ASP.NET Core 跨域

    跨域常见问题: 1.发布到IIS上后跨域问题 解决方法 修改web.config文件 <system.webServer> <httpProtocol> <customH ...

  10. git开发规范