scala中函数和方法作为参数使用

scala中函数和方法作为参数使用

有参的函数

直接看下面代码

   def method1(arge1:Int,arge2:Int):Int={
      arge1 + arge2
    }
    val funct1 = (arge1:Int,arge2:Int) =>{
      arge1 - arge2
    }




    def method2(f:(Int,Int)=>Int):Int={
      f(12,12)
    }
    val i = method2(method1)
    println("方法传方法"+4)


    val funct2 = (f:(Int,Int)=>Int) =>{
      f(22,22)
    }
    val i1 = funct2(method1)
    println("函数传方法"+i1)


    def method3(f:(Int,Int)=>Int):Int={
      f(4,1)
    }
    val i2 = method3(funct1)
    println("方法传函数"+i2)

    val funct3 = (f:(Int,Int)=>Int)=>{
      f(5,1)
    }
    val i3 = funct3(funct1)
    println("函数传函数"+i3)

如上定义啦一个函数和一个方法,在当作参数传入的时候没什么区别
方法会被转换为函数使用

无参的函数作为参数
 //  调用方式一
   def method1(): Unit ={
      println("printmethod1")
    }

    def method2(m:() =>Unit)={
      m()
    }

    method2(method1)

//调用方式二
    def method11: Unit ={
      println("printmethod11")
    }

    def method22(m: =>Unit)={
      m
    }

    method22(method11)
//调用方式三
    def method111(): Unit ={
      println("printmethod111")
    }

    def method222(m:() =>Unit)={
      m
    }

    method222(method111) //此处没有输出

上面调用方式三没有输出,只有一二的方式可以使用

你可能感兴趣的:(scala)