当前位置:网站首页>scala 10种函数高级应用
scala 10种函数高级应用
2022-08-10 14:46:00 【S_ng】
object TestCallByValue {
def main(args: Array[String]) {
delayedCalculator(transmitMe());
}
def transmitMe(): String = {
println("我在 transmitMe 方法中!")
return "transmitMe 返回值"; }
def delayedCalculator(t: String): Unit = {
println("在 delayedCalculator 方法--开始")
println("正式调用传过来的函数: " + t)
println("在 delayedCalculator 方法--结束") } }
object TestCallByName {
def main(args: Array[String]) {
delayedCalculator(transmitMe());
}
def transmitMe(): String = {
println("我在 transmitMe 方法中!")
return "transmitMe 返回值";
}
def delayedCalculator(t: => String): Unit = {
println("在 delayedCalculator 方法--开始")
println("正式调用传过来的函数: " + t)
println("在 delayedCalculator 方法--结束")
}
}
object TestCallByParaName {
def main(args: Array[String]) {
printBabyNames(second = "张二", first = "张一");
}
def printBabyNames(first: String, second: String): Unit
= {
println("第一个孩子叫=" + first);
println("第二个孩子叫=" + second);
} }
object TestNonFixParas {
def main(args: Array[String]) {
printAllParasValue("one", "two", "three", "four");
}
def printAllParasValue(paras: String*): Unit = {
for (temp <- paras) {
println(temp);
} }
}
object TestDefaultParaFunction {
def main(args: Array[String]) {
println("完全使用默认值的返回值 : " + salaryMoney());
println("部分使用默认值的返回值 : " + salaryMoney(10));
println("部分使用默认值的返回值 : " + salaryMoney(10,10000));
}
def salaryMoney(a: Int = 5, unit: Int = 1000): Int = {
return a * unit
} }
object TestRecusive {
def main(args: Array[String]) {
var n=4
println(n+"的阶乘为="+myFactorial(n))
}
def myFactorial(n: Int): Int = {
if (n <= 1)
return 1
else
return n * myFactorial(n - 1) } }
object TestHighFunctionByTransmitFunctionPara {
def main(args: Array[String]) {
delayedCalculator(transmitMe());
}
def transmitMe(): String = {
println("我在 transmitMe 方法中!")
return "transmitMe 返回值"; }
def delayedCalculator(t: => String): Unit = {
println("在 delayedCalculator 方法--开始")
println("正式调用传过来的函数: " + t)
println("在 delayedCalculator 方法--结束") } }
object TestHighFunctionByRetFunction {
def main(args: Array[String]) {
var mySalaryFun=multiplyBy(1000);
println(mySalaryFun(10));
}
def multiplyBy(salaryUnit:Int)=(x:Int)=>salaryUnit*x }
object TestEmbedFunction {
def main(args: Array[String]) {
var msg="HelloWorld";
printMessage(msg);
}
def printMessage(msg: String): Unit = {
def printMessageInner(msg: String): Unit = {
println(msg);
}
printMessageInner(msg);
} }
函数定义:
var inc = (x:Int) => x+1
函数使用:
var x = inc(8)+1
import java.util.Date
object TestPartialParasFunction {
def main(args: Array[String]) {
val name="张三"
sayHello(name, "上午好")
Thread.sleep(1000)
sayHello(name, "中午好")
Thread.sleep(1000)
sayHello(name, "晚上好") }
def sayHello(name: String, message: String)
= {
println(name + "----" + message) } }
def main(args: Array[String]) {
val name="张三"
val partialSay=sayHello(name,_:String);
partialSay("上午好")
Thread.sleep(1000)
partialSay("中午好")
Thread.sleep(1000)
partialSay("晚上好") }
def sayHello(name: String, message: String) = {
println(name + "----" + message) }
def add(x: Int, y: Int) = x + y;
def main(args: Array[String]) {
println(add(3,4));
}
def add(x: Int, y: Int) = x + y;
def add(x:Int)(y:Int) = x + y
object TestCurryingFunction {
def main(args: Array[String]) {
//对应柯里化形式 1 的使用
var curryingAdd1 = add1(3)
//对应柯里化形式 2 的使用
var curryingAdd2 = add2(3)(_)
println(curryingAdd1(4));
println(curryingAdd1(4));
}
//柯里化形式 1
def add1(x: Int) = (y: Int) => x + y;
//柯里化形式 2
def add2(x: Int)(y: Int) = x + y; }
边栏推荐
- 基于inotify实现落盘文件的跨进程实时读写交互
- 机器学习总结(一)
- 《论文阅读》PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
- 1W word detailed thread local storage ThreadLocal
- 网络初识(二)
- 王学岗—————————哔哩哔哩直播-手写哔哩哔哩硬编码录屏推流(硬编)(26节课)
- Azure IoT 合作伙伴技术赋能工作坊:IoT Dev Hack
- 易基因|深度综述:m6A RNA甲基化在大脑发育和疾病中的表观转录调控作用
- Appium for APP automation testing
- win2012安装Oraclerac失败
猜你喜欢
随机推荐
PAT甲级 1014 排队等候(队列大模拟+格式化时间)
It is reported that the original Meitu executive joined Weilai mobile phone, the top product may exceed 7,000 yuan
电脑重装系统提示activex部件不能创建对象如何解决
第五讲 测试技术与用例设计
Do not access Object.prototype method ‘hasOwnProperty‘ from target object....
《论文阅读》PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
pm2之静态文件服务
兆骑科创创业赛事活动发布平台,创业赛事,项目路演
Based on Azuki Series: NFT Valuation Analysis Framework "DRIC"
宝塔面板开放Redis给指定外网机器
统信 UOS V20 专业版(1050update2)发布:文件共享、全局搜索等优化
“国资云”和“国家云”能给市场带来怎样的变革?
usb转rs485测试软件,usb转rs485「建议收藏」
紫金示例
Pytest framework optimization
奢侈品鉴定机构小程序开发制作功能介绍
微信小程序,自定义输入框与导航胶囊对其
阿里五位MySQL封神大佬耗17个月总结出53章性能优化法则
@RequestBody的使用[通俗易懂]
Digital Collection Platform System Development Practice