在Scala中,
也称为函数文字。不包含名称的函数称为匿名函数。匿名函数提供了轻量级的函数定义。当我们要创建一个内联函数时, 这很有用。
语法如下:
(z:Int, y:Int)=> z*y
Or
(_:Int)*(_Int)- 在上面的第一种语法中, =>被称为转换器。转换器用于使用右侧的表达式将符号左侧的参数列表转换为新结果。
- 在以上第二种语法中, _字符称为通配符, 它是表示在匿名函数中仅出现一次的参数的简写方式。
带参数的匿名函数
在对象中实例化函数文字时, 称为函数值。换句话说, 当将匿名函数分配给变量时, 我们可以像调用函数一样调用该变量。我们可以在匿名函数中定义多个参数。
范例1:
// Scala program to illustrate the anonymous method
object Main 
{
     def main(args : Array[String]) 
     {
          
         // Creating anonymous functions
         // with multiple parameters Assign
         // anonymous functions to variables 
         var myfc 1 = (str 1 : String, str 2 : String) => str 1 + str 2
          
         // An anonymous function is created 
         // using _ wildcard instead of 
         // variable name because str1 and
         // str2 variable appear only once 
         var myfc 2 = ( _: String) + ( _: String)
          
         // Here, the variable invoke like a function call
         println(myfc 1 ( "Geeks" , "12Geeks" ))
         println(myfc 2 ( "Geeks" , "forGeeks" ))
     }
}输出如下:
Geeks12Geeks
lsbin没有参数的匿名函数
我们可以定义不带参数的匿名函数。在Scala中, 我们可以将匿名函数作为参数传递给另一个函数。
范例2:
// Scala program to illustrate anonymous method
object Main 
{
     def main(args : Array[String]) 
     {
          
         // Creating anonymous functions 
         // without parameter 
         var myfun 1 = () => { "Welcome to lsbin...!!" }
         println(myfun 1 ())
          
         // A function which contain anonymous 
         // function as a parameter
         def myfunction(fun : (String, String) => String) = 
         {
             fun( "Dog" , "Cat" )
         }
          
         // Explicit type declaration of anonymous
         // function in another function
         val f 1 = myfunction((str 1 : String, str 2 : String) => str 1 + str 2 )
          
         // Shorthand declaration using wildcard
         val f 2 = myfunction( _ + _ )
         println(f 1 )
         println(f 2 )
     }
}输出如下:
Welcome to lsbin...!!
DogCat
DogCat
 
	![从字法上最小长度N的排列,使得对于正好为K个索引,a[i] a[i]+1](https://www.lsbin.com/wp-content/themes/begin%20lts/img/loading.png)
