美文网首页
scala函数

scala函数

作者: 初夏时的猫 | 来源:发表于2021-12-11 16:41 被阅读0次

    函数参数

    1.可变参数(多个参数时,可变参数一般放置在最后)

    def demo(name : String, girlFriend : String*) : Int = 1
    

    2.参数默认值,一般有默认值的参数放在后面

    def demo(name : String, girlFriendSize : Int = 5) : Int = 1
    

    3.带名参数

    def demo(name : String,age : Int) : Int = 1
    demo(name = "cbd" , age = 18)
    

    至简原则

    1.return省略,函数体最后一行作为返回值

    2.函数体只有一行代码,可以省略花括号

    3.返回值类型如果能够推断出来,[:返回值]可以省略

        def gnmyd = {
          "给nm一刀"
        }
    

    4.如果有return,则不能省略返回值类型

        def gnmyd = {
         //编译异常
          return "给nm一刀"
        }
    

    5.如果函数明确声明Unit返回值,那即使函数使用return关键字也不起作用

    6.Scala如果期望是无返回值类型,可以省略等号和[:返回值]

    7.如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加

    8.如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略

    9.如果不关心名称,只关心逻辑处理,那么函数名( def)可以省略

      def ex1(funcName:Int => Unit): Unit ={
        ex2(1)
      }
      def ex2(id:Int):Unit = {
          println("上去就是一刀")
      }
    

    高阶函数

    1.函数可作为值传递

        val ls:(Int, Int) => Int = abab
        val la = abab _
    

    2.函数可以作为参数进行传递

        def 小野六花(xylh : (Int,Int) => Int): Unit ={
         
         }
    

    注:定义一个函数,函数参数是一个函数签名

    3.函数可以作为函数返回值返回

      def 小野六花() ={
        def 三上悠亚():Unit = {
          println("深田永美")
        }
      }
      小野六花()()
    

    匿名函数

    没有名字的函数就是匿名函数,形如(x:Int)=>{//do}

    匿名函数至简原则
    1)参数类型可以省略,会根据形参自动推导
    2)类型省略后,如果只有一个参数,小括号可以省略
    3)匿名函数只有一行,大括号也可以省略
    4)如果参数只出现一次,则参数省略且后面参数可以用_代替

      def a(l:(Int,String)=>String): Unit ={
        println(l(1,"a"))
      }
      def b(l:Int=>Unit):Unit = {
        l(1)
      }
        this.a((_,_)=>{"aaa"})
        this.b(_=>println("bbb"))
    

    函数柯里化(Haskell Curry)&闭包&惰性加载

    1.闭包是函数式编程的标配
    2.scala递归必须声明函数返回值类型
    3.函数返回值被声明为lazy时,函数的执行将被推迟,知道我们首次对此取值,该函数才会执行
    4.lazy不能修饰var

    控制抽象

    https://www.cnblogs.com/chorm590/p/scala_201904142108.html

    相关文章

      网友评论

          本文标题:scala函数

          本文链接:https://www.haomeiwen.com/subject/pcgkfrtx.html