/** * 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) } }
Scala方法定义
最新推荐文章于 2023-04-18 19:40:15 发布