scala函数至简原则是什么?
- 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函数至简原则是什么?的更多相关文章
- Scala函数高级篇
一.匿名函数 没有名字的函数就是匿名函数,格式:(x:Int)=>{函数体} x:表示输入参数类型:Int:表示输入参数类型:函数体:表示具体代码逻辑 传递匿名函数至简原则: 参数的类型可以省略 ...
- Scala 函数(五)
函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...
- Scala:函数和闭包
http://blog.csdn.net/pipisorry/article/details/52902271 Scala函数 Scala 有函数和方法,二者在语义上的区别很小.Scala 方法是类的 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Spark记录-Scala函数
Scala函数 Scala有函数和方法. Scala方法是一个具有名称和签名的类的一部分. Scala中的函数是一个可以分配给变量的完整对象. 函数定义可以出现在源文件中的任何位置. 不带参数的函数 ...
- Spark记录-Scala函数与闭包
函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...
- [scala] scala 函数 (⑦)
1.scala 函数定义 2.scala 高阶函数 3.匿名函数 4.柯里化 import scala.math._ /** * @author xwolf * @date 2017-04-24 9: ...
- ORACLE时间函数(SYSDATE)简析
ORACLE时间函数(SYSDATE)简析 分类: 原文地址:ORACLE时间函数(SYSDATE)简析 作者:skylway 加法 select sysdate,add_months(sysdate ...
- Scala函数字面量简化写法
Scala提供了多种方法来简化函数字面量中多余的部分,比如前面例子中filter方法中使用的函数字面量,完整的写法如下: (x :Int ) => x +1 首先可以省略到参数的类型,Scala ...
随机推荐
- Ceph对象存储 S3
ceph对象存储 作为文件系统的磁盘,操作系统不能直接访问对象存储.相反,它只能通过应用程序级别的API访问.ceph是一种分布式对象存储系统,通过ceph对象网关提供对象存储接口,也称为RADOS网 ...
- IP路由__IP路由选择过程
1.主机A上的某个用户ping主机B的IP地址 1.主机A的因特网控制报文协议(ICMP)将创建一个回应请求数据包(在它的数据域中只包含有字母). 2. ICMP将把这个有效负荷交给因特网协议(IP) ...
- HarmonyOS三方件开发指南(8)——RoundedImage
[小年答谢,新春送礼]免费抽取1000元京东卡+更多新春好礼~查看详情>>> 目录: 1. RoundedImage组件功能介绍 2. RoundedImage使用方法 3. Rou ...
- 设计模式(十四)——模板模式(SpringIOC源码分析)
1 豆浆制作问题 编写制作豆浆的程序,说明如下: 1) 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3 ...
- Spring 的循环依赖,源码详细分析 → 真的非要三级缓存吗
开心一刻 吃完晚饭,坐在院子里和父亲聊天 父亲:你有什么人生追求? 我:金钱和美女 父亲对着我的头就是一丁弓,说道:小小年纪,怎么这么庸俗,重说一次 我:事业与爱情 父亲赞赏的摸了我的头,说道:嗯嗯, ...
- Hbase Java API包括协处理器统计行数
package com.zy; import java.io.IOException; import org.apache.commons.lang.time.StopWatch; import or ...
- 2013 Asia Hangzhou Regional Contest hdu4780 Candy Factory
参考:https://blog.csdn.net/sd_invol/article/details/15813671 要点 每个任务的结束时间是固定的,不受任何因素影响 机器只在最一开始有用,在那之后 ...
- Codeforces Round #647 (Div. 2) B. Johnny and His Hobbies(枚举)
题目链接:https://codeforces.com/contest/1362/problem/B 题意 有一个大小及元素值均不超过 $1024$ 的正整数集合,求最小正整数 $k$,使得集合中的每 ...
- 【bzoj 1190】梦幻岛宝珠(DP)
这题是在01背包问题的基础上,扩充了重量,需要用时间换空间. 思路: 1.仔细看题,注意到重量wi为a*2^b(a<=10,b<=30),很容易想到要按 b 分开做背包的DP.接下来的重点 ...
- Proud Merchants HDU - 3466 01背包&&贪心
最近,我去了一个古老的国家.在很长一段时间里,它是世界上最富有.最强大的王国.结果,这个国家的人民仍然非常自豪,即使他们的国家不再那么富有.商人是最典型的,他们每个人只卖一件商品,价格是Pi,但是如果 ...