scala 几个函数小例子

后续补充

 

 

/**
  * Created by dengy on 2017/12/18.
  */
object grammarPractise {
  def main(args: Array[String]) {

    //=======================================================//
     def fun(str1: String, str2: String) = {
      str1 + "\t" + str2
    }

    println( fun("spark", "hadoop") ) //spark	hadoop

    val add = (str1:String, str2:String)=> str1+ "\t" +str2

    println(add("spark", "hadoop"))  //spark	hadoop

    def g( f:(String,String)=>String ,str1:String,str2:String)={
      val line = f(str1,str2)
      println(line)
    }

    g(add, "Spark", "Hadoop")  //spark	hadoop

    //这个确实一中 调用的办法, 是 传 函数的一种办法。三个结果都是: Spark	Hadoop
    //=======================================================//

    // 变量的 集合中的变量
    val list = List.range(1,10)
    println( list.mkString("[","\t","]"))  //[1	2	3	4	5	6	7	8	9]

    val list2 = list.filter( ( x:Int )=> x%2==0 )
    println( list2.mkString("[","\t","]") ) //[2	4	6	8]

    val list3 = list.filter(x=>x%2==0)
    println(list3.mkString("[","\t","]"))  //[2	4	6	8]

    val list4 = list.filter(_%2==0)
    println(list4.mkString("[","\t","]"))  //[2	4	6	8]

    //=======================================================//

    // 传递函数
    val sayHello:()=> Unit = () =>println("hello")

    def g1(f:()=>Unit,num:Int)={
      for(i<-1 to num)f()
    }
    g1(sayHello,5)  // 5个  hello

    //=======================================================//

    //传递String参数
    def saySomething(str1:String)= (str2:String) => println( str1+"\t"+str2 )

    val aa:String=>Unit=saySomething("spark")

    aa("hadoop")  //spark	hadoop

    //=======================================================//

    var standardAge = 20
    val aa1 = (age:Int)=> age>=standardAge //这个最后是个boolean型
    println(aa1(22)) //true

    def g2( f:Int=>Boolean, age:Int):Unit={  //注意这里的写法
      println(  f(age)  )
    }
    g2(aa1,22) //true
    standardAge = 23
    g2(aa1,22) //false   ,注意,这里调用的aa1中standardAge,已经被改了,所以为false

    //=======================================================//
    //调用函数,实现加法
    var more = 10
    val x=(one:Int)=>one+more
    println(x(20)) //30
    more=20
    println(x(20)) //40

    //=======================================================//

    //foreache 累加
    var sum = 0
    val array = Array(10,20,30)
    array.foreach(f=> sum=sum+f )
    println(sum)

    //=======================================================//

  }
}

  

 

posted @ 2017-12-19 16:13  dy9776  阅读(482)  评论(0编辑  收藏  举报