Scala自定义函数

Scala自定义函数

Scala的函数定义以“def”开头,然后是一个自定义的函数名(推荐驼峰命名法),接着是用圆括号“( )”包起来的参数列表。在参数列表里,多个参数用逗号隔开,并且每个参数名后面要紧跟一个冒号以及显式声明的参数类型,因为编译器在编译期间无法推断出入参类型。写完参数列表后,应该紧跟一个冒号,再添加函数返回结果的类型。最后,再写一个等号“=”,等号后面是用大括号“{ }”包起来的函数体。例如:

用“def”开始函数定义
       | 函数名
       |   |  参数及参数类型
       |   |        |   函数返回结果的类型
       |   |        |          |  等号
       |   |        |          |   |
      def max(x: Int, y: Int): Int = {
        if(x > y)
          x
        else  |
          y   | 
      }       |
              |
       大括号里定义函数体

一般函数

规范化写法,scala 函数的返回值是最后一行代码;

def minValue(a:Int,b:Int):Int = {   //一般函数
     if (a>b) b else a
    }
    val result = minValue(21,12)
    println(result)

    def self(name:String,age:Int):String  ={
      s"我的名字是:$name,我的年龄是:$age"
    }
    val a=self("zhangsan",22)
    println(a)

递归函数

相当于阶乘 输入10 输出1098…*1的值

    def ji(n:Int):Int={
      if(n==1) 1 else
       n*ji(n-1)
    }

    println(ji(10))

指定形参传参

 def  showMsg(name:String,age:Int):Unit={
      println("hello:"+name+",age:"+age)
    }
    showMsg("gree",18)
    showMsg(age = 33,name = "green")   

通过* 可以指定未知长度的参数

    def showMsg(name:String,s:String*):Unit={
      println(name)
      println(s.getClass)
      for (str <- s ){
        println(str)
      }
    }
    showMsg("gree1")
    showMsg("gree2","ss1")
    showMsg("gree3","ss1","ss2","ss4")

匿名函数

    def sum(a:Int,b:Int):Int=a+b
    val abc=(a:Int,b:Int) =>a+b    //表达式代表 匿名函数
    val cba=abc
    println(sum(10,20))
    println(abc(10,20))
    println(cba(10,20))

    val a:String ="aaa"
    val b:Int=21
    val abc2:(Int,Int) => Int = (a:Int,b:Int) =>a+b
    val abc3:(Int,Int) => Int = sum
    val cba2:(Int,Int) =>Int = abc2

传参的时候直接传函数

  def funTest(f:(Int,Int)=>Int,msg:String):String={
      val a=100
      val b=50
      msg+f(a,b)
    }
    def sum(a:Int,b:Int):Int={
      a+b
    }
    println(funTest(sum,"和:"))     //可以自定义函数调用f的参数
    println(funTest((a:Int,b:Int)=>a+b,"和:"))  //也可以用匿名函数直接调用
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值