Scala方法定义

/**
  * Created by TG on 2017/10/17.
  * 在Scala中,定义方法的关键字是def
  * 定义方法的通用格式:关键字 方法名(参数列表):方法的返回值类型={方法体}
  */
object MethodDemo {
  //方法的返回值不需要使用return关键字,同时方法的最后一条语句的返回值作为整个方法的返回值
  def m1(x: Int, y: Int): Int = {
    var num = 0
    num += x
    num + y
    // "hello"
  }

  //可以省略方法的返回值类型,Scala会自动根据最后一条语句的返回值推断出方法的返回值类型
  def m2(x: Int, y: Int) = {
    x + y
  }

  //如果方法没有返回值,可以使用Unit来标注,表现在小括号()类似于Java中的void
  def m3(x: Int, y: Int): Unit = {
    x + y
  }

  //这也是没有返回值的方法,在参数列表括号后面直接添加方法体{},没有加等号=,这种方法称为过程
  def m3_2(x: Int, y: Int) {
    x + y
  }

  //先定义方法的参数类型,具体的参数名称在方法体中
  //注意:方法名m4后面需要加冒号
  def m4: (Int, Int, Int) => Int = {
    (x, y, z) => {
      x + y + z
    }
  }

  //柯里化
  def m5(x: Int)(y: Int) = {
    x + y
  }

  //柯里化
  def m6(x: Int) = (y: Int) => {
    x + y
  }

  //如果定义一个方法,方法名称后面的参数列表为空,那么在调用的时候可以加括号,也可以不加括号
  def m7() = {
    println("hello world")
  }

  //如果定义一个方法,方法没有参数列表,那么在调用的时候也不能加“()”,否则编译不通过
  def m8 = {
    println("hello world")
  }

  //===============================================================================
  //递归方法要求必须写明方法的返回值类型,不能省略掉,否则报错
  //递归实现斐波那契数列 1,1,2,3,5,8,......求第N个数值是多少,计位从1开始
  def m9(num: Int): Int = {
    if (num == 1 || num == 2) {
      1
    } else if (num > 2) {
      m9(num - 1) + m9(num - 2)
    } else {
      0
    }
  }

  //练习:用递归的形式实现阶乘,1*2*3*4.....,求第N位的乘积,计位从1开始
  def Factorial(num: Int): Int = {
    if (num <= 0) {
      0
    } else if (num == 1) {
      1
    } else {
      num * Factorial(num - 1)
    }
  }

  //当参数个数不固定时,那么这时可以将参数定义为可变参数,可变参数要求必须是方法的最后一个参数
  def m10(name: String, nums: Int*): Unit = {
    var sum = 0
    for (num <- nums) {
      sum += num
    }
    println(name + "=" + sum)
  }

  def main(args: Array[String]): Unit = {
    //    val test=m1(2,3)
    //    println(test)
    //    println(m2(2,4))
    //    println(m3(1,2))
    //    println(m4(1,2,3))
    //    println(m5(1)(2))
    //    println(m6(1)(2))
    //    m7()
    //    m7
    //    m8
    //    m8()
    //    println(m3_2(1,2))
    //    println(m9(5))
    println(Factorial(4))
   m10("李四",1,2,3)
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值