当前位置:网站首页>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)+1import 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 + yobject 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; }边栏推荐
猜你喜欢

It is reported that the original Meitu executive joined Weilai mobile phone, the top product may exceed 7,000 yuan

【MindSpore易点通机器人-02】设计与技术选型

池化技术有多牛?来,告诉你阿里的Druid为啥如此牛逼!

第五讲 测试技术与用例设计

统信 UOS V20 专业版(1050update2)发布:文件共享、全局搜索等优化

2022年网络安全培训火了,缺口达95%,揭开网络安全岗位神秘面纱

蓝帽杯半决赛火炬木wp

波士顿房价预测

无线网络、HTTP缓存、IPv6

Azure IoT Partner Technology Empowerment Workshop: IoT Dev Hack
随机推荐
SWIG教程《四》-go语言的封装
file system design
正则表达式(包含各种括号,echo,正则三剑客以及各种正则工具)
学习MySQL 临时表
公网IP和内网IP的区别[通俗易懂]
Redis -- Nosql
PCL 最小二乘拟合空间曲线
领域驱动模型设计与微服务架构落地-从项目去剖析领域驱动
pm2 static file service
波士顿房价预测
机器学习总结(一)
numpy.meshgrid()理解
解题-->在线OJ(十九)
《论文阅读》PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
自定义picker滚动选择器样式
fatal error C1083 无法打开包括文件'io.h' No such file
Pagoda panel open Redis to specify the network machine
微信小程序,自定义输入框与导航胶囊对其
E. Cross Swapping(并查集变形/好题)
SWIG tutorial "four" - package of go language