码迷,mamicode.com
首页 > 其他好文 > 详细

Scala函数式编程

时间:2019-08-31 12:24:33      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:ring   变化   小白   map   main   collect   res   另一个   你好   

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函数式编程

标签:ring   变化   小白   map   main   collect   res   另一个   你好   

原文地址:https://www.cnblogs.com/qfdy123/p/11438468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!