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 ...
随机推荐
- UI和3D物体的堆叠响应
一.问题:当3D物体和UI元素重叠显示时一般UI元素会遮挡物体,这时点击UI元素响应时UI后方的物体也会响应. private void OnMouseDown() { ChangeColor(); ...
- Maven三种打包方式jar war pom
1.pom工程 用在父级工程或聚合工程中.用来做jar包的版本控制.必须指明这个聚合工程的打包方式为pom 2.war工程 将会打包成war,发布在服务器上的工程.如网站或服务.在SpringBoot ...
- File类以及IO流
1.File类 package LESSON12; import java.io.File; import java.io.IOException; import java.text.SimpleDa ...
- [ICPC 2018 宁夏邀请赛] A-Maximum Element In A Stack(思维)
>传送门< 前言 辣鸡网络赛,虽然我是个菜鸡,然而好几个队伍十几分钟就AK???我心态那会彻底崩了,后来群里炸了,话题直接上知乎热搜,都是2018ICPC宁夏网络赛原题,这怎么玩,拼手速? ...
- 「SCOI2005」互不侵犯 (状压DP)
题目链接 在\(N\times N\) 的棋盘里面放 \(K\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共\(8\) 个格子 ...
- 【51nod1674】区间的价值 V2(算法效率--位运算合并优化+链表实现)
题目链接: 51nod1674 题意:规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积.现在l有一个 N 个数的序列,问所有n*(n+1)/2个区间的贡献的和对1 ...
- Codeforces Round #643 (Div. 2) 题解 (ABCDE)
目录 A. Sequence with Digits B. Young Explorers C. Count Triangles D. Game With Array E. Restorer Dist ...
- hdu1004 Let the Balloon Rise
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- Relatives POJ - 2407 欧拉函数
题意: 给你一个正整数n,问你在区间[1,n)中有多少数与n互质 题解: 1既不是合数也不是质数(1不是素数) 互质是公约数只有1的两个整数,叫做互质整数.公约数只有1的两个自然数,叫做互质自然数 所 ...
- 递归实现jsonTree
using System;using System.Collections.Generic;using System.Text;using WeChatApi.Model;using System.L ...