Scala函数式编程
Posted qfdy123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala函数式编程相关的知识,希望对你有一定的参考价值。
package com.yz6 import scala.collection.mutable.ArrayBuffer object test def main(args: Array[String]): Unit = function1("小白") aa("比亚迪") val arr=ArrayBuffer(4,6,1,-4,100,66,3)//伴生对象 //匿名函数【只要灵魂的函数】作为参数传递 // val result=arr.sortWith((x,y)=>x>y)//精简版 val result=arr.sortWith(_>_)//函数签名也去掉,只剩函数体(灵魂中的灵魂) //超简版 看不出来是函数 println(result) //调用高阶函数 h1("肯德基",(name:String)=>println("你好"+name)) val mm=h2("绿巨人") //mm最终被传递了一个灵魂,就是h2的返回值【匿名函数】 //可以形成 def mm(x:String)=println("绿巨人"+"------------"+x) mm("钢铁侠") //结果 绿巨人------钢铁侠 val myArray=ArrayBuffer(1,4,6,7,2) //map方法---映射方法---参数是一个匿名函数 var r1=myArray.map((x:Int)=>x*100+10)//简化 var r2=myArray.map((x)=>x*100+10) var r3=myArray.map(x=>x*100+10) var r4=myArray.map(_*100+10) //解析 //y=x+1 y的值随着x的变化而变化 //表达性--简洁 阅读性--差 println(r1) println(r2) println(r3) println(r4) //定义一个函数 躯壳+灵魂 def function0(name:String): Unit = println("你好"+name) //将一个函数作为值传递给另一个函数[在被传递函数后写 空格_ // 函数签名 函数体 //(name:String)=>println("你好"+name) def function1=function0 _ //形成了如下的函数(相当于把一个函数灵魂(函数签名和函数体)给了另一个函数 名字只是躯壳) //def function1(name:String)=println("你好"+name) //匿名函数 val aa = (x:String) => println(x+"他来了") //如果一个变量/不变量被赋予了一个灵魂(函数签名+函数体),那么调用的时候应该把该变量/不变量当做函数一样调用 //定义高阶函数case1 将函数作为参数 def h1(name:String,fun:(String)=>Unit): Unit = fun(name) //定义高阶函数case2 将函数作为返回值 def h2(name:String)=(x:String)=>println(name+"------------"+x)
以上是关于Scala函数式编程的主要内容,如果未能解决你的问题,请参考以下文章