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 ...
随机推荐
- 线上服务器CPU100%排查,Linux进程消耗查看
线上服务器CPU100%排查,Linux进程消耗查看 1.排查步骤 1.1Linux下排查 1.1.1查消耗cpu最高的进程PID 1.1.2根据PID查出消耗cpu最高的线程号 1.1.3根据线程号 ...
- linux 文件目录解释笔记(未完待续...)
目录 应放置档案内容 /bin 系统有很多放置执行档的目录,但/bin比较特殊.因为/bin放置的是在单人维护模式下还能够被操作的指令. 在/bin底下的指令可以被root与一般帐号所使用,主要有:c ...
- linux 用户、用户组及相关命令(useradd 、passwd、userdel 、groupadd 、groupdel、usermod 、gpasswd 、 id、su)
linux是一个多用户系统,用于权限管理(权限最小化); 相关命令: 7 8 9 10 11 12 13 14 15 useradd passwd userdel groupadd groupdel ...
- 使用V8和node轻松profile分析nodejs应用程序
目录 简介 使用V8的内置profiler工具 使用gm来build V8 手动build V8 生成profile文件 分析生成的文件 生成时间线图 使用nodejs的profile工具 简介 我们 ...
- Centos根目录100%解决思路
Centos 7 根目录(爆满)100%解决思路,下面以宝塔面板环境为例 1.首先远程到服务器,在~下输入df -h ,看下根目录下文件夹使用情况 [root@localhost~]# df -h F ...
- hdu4460 Friend Chains(记忆化广度优先搜索)
题意: 任意两点间最短路中的最长距离. 思路: BFS遍历每个点能到达的最远距离. Tips: vector的clear要与resize联用. #include <bits/stdc++.h&g ...
- 【noi 2.6_6045】开餐馆(DP)
题意:有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k.问最大利润. 解法:f[i]表示在前 i 个地址中选的最大利润. 1 #include<cstdio> 2 #include ...
- 牛客小白月赛28 J.树上行走 (并查集,dfs)
题意:有\(n\)个点,\(n-1\)条边,每个点的类型是\(0\)或\(1\),现在让你选一个点,然后所有与该点类型不同的点直接消失,问选哪些点之后,该点所在的联通块最大. 题解: 因为选完之后两个 ...
- EFCore学习记录--数据访问技术人门
1.安装Microsoft.EntityFrameworkCore.Sqlite.Microsoft.EntityFrameworkCore.Tools包2.创建模型 数据库上下文模型:Bloggin ...
- .Net Core 国际化
创建项目什么的就不说了吧 直接进入正题吧 我这里建的是个webapi 添加资源文件 1.首先我们创建一个Language文件夹,这就是我们在后面Startup类中需要配置的目录名. 2.然后我们在La ...