函数定义
* 语法
* def 函数名称(参数列表): 返回类型 = {
* 方法体
* [return]
* }
* 注意事项 : 参数列表 必须标注类型,因为Scala编译器无法推断 参数列表的数据类型
*
* 函数至简原则(重点) - 能省则省
* 1. return 可以省略,Scala会将方法体的最后一行的值作为返回值
* 2. 如果函数体 只有一行代码, 可以省略花括号
* 3. 返回值类型如果能够推断出 可以省略(:返回值类型)
* 4. 如果方法体内 有return,则不能省略(:返回值类型),必须指定
* 5. 如果已指定 返回类型为Unit(类似java中的void),那么函数体内 无需 return
* 6. 如果无返回值类型,可以省略 = 号,这样的结构我们称之为 过程
* 7. 如果函数没有参数 声明参数列表,调用时可以省略 (),也可以不省略
* 8. 如果函数没有参数 没有声明参数列表,调用时必须省略 ()
*
* 函数的参数
* 1. 可变参数 格式 参数名称:dataType* ,dataType类型的数组
* 2. 如果参数列表中有多个参数, 可变参数一般放在最后
* 3. 参数默认值,一般将有默认值的参数放在参数列表的最后
* 4. 带参数名调用
* */
/** * @author gaocun * @create 2021-10-09 9:05 AM */ object 定义函数_01 { def main(args: Array[String]): Unit = { /*函数定义 * 语法 * def 函数名称(参数列表): 返回类型 = { * 方法体 * [return] * } * 注意事项 : 参数列表 必须标注类型,因为Scala编译器无法推断 参数列表的数据类型 * * 函数至简原则(重点) - 能省则省 * 1. return 可以省略,Scala会将方法体的最后一行的值作为返回值 * 2. 如果函数体 只有一行代码, 可以省略花括号 * 3. 返回值类型如果能够推断出 可以省略(:返回值类型) * 4. 如果方法体内 有return,则不能省略(:返回值类型),必须指定 * 5. 如果已指定 返回类型为Unit(类似java中的void),那么函数体内 无需 return * 6. 如果无返回值类型,可以省略 = 号,这样的结构我们称之为 过程 * 7. 如果函数没有参数 声明参数列表,调用时可以省略 (),也可以不省略 * 8. 如果函数没有参数 没有声明参数列表,调用时必须省略 () * * 函数的参数 * 1. 可变参数 格式 参数名称:dataType* ,dataType类型的数组 * 2. 如果参数列表中有多个参数, 可变参数一般放在最后 * 3. 参数默认值,一般将有默认值的参数放在参数列表的最后 * 4. 带参数名调用 * */ printf("max1 : %d\n", max1(10, 9)) printf("max2 : %d\n", max2(10, 9)) printf("max3 : %d\n", max3(10, 90)) printf("max4 : %d\n", max4(10, 90)) max5(10, 90) max6(10, 90) max7 max7() max8 // max8() max8 does not take parameters /* 函数的参数*/ test("dawang", "he") test1(1, "西门", "东方") test2(1) test2(id = 1, "八戒") } /*定义函数*/ // 1.return 可以省略,Scala会将方法体的最后一行的值作为返回值 def max1(x: Int, y: Int): Int = { if (x > y) 100 else y var id = 99999 id } // 2.如果函数体 只有一行代码, 可以省略花括号 def max2(x: Int, y: Int): Int = if (x > y) 100 else y // 3.返回值类型如果能够推断出 可以省略(:返回值类型) def max3(x: Int, y: Int) = if (x > y) 100 else y // 4.如果方法体内 有return,则不能省略(:返回值类型),必须指定 def max4(x: Int, y: Int): Int = { if (x > y) x else y return 999 } // 5.如果已指定 返回类型为Unit(类似java中的void),那么函数体内 无需 return def max5(x: Int, y: Int): Unit = { if (x > y) x else y return 999 print("大王") } // 6. 如果无返回值类型,可以省略 = 号 def max6(x: Int, y: Int) { if (x > y) x else y return 999 print("大王") } // 7. 如果函数没有参数 声明参数列表,调用时可以省略 (),也可以不省略 def max7() { print("max7\n") } // 8. 如果函数没有参数 没有声明参数列表,调用时必须省略 () def max8 { print("max8\n") } // 1. 可变参数 格式 参数名称:dataType* ,dataType类型的数组 def test(s: String*): Unit = { printf("第一个参数 : %s 第二个参数 : %s\n", s(0), s(1)) } // 2. 如果参数列表中有多个参数, 可变参数一般放在最后 // *-parameter must come last def test1(id: Int, s: String*): Unit = { printf("id : %d 第一个参数 : %s 第二个参数 : %s\n", id, s(0), s(1)) } // 参数默认值,一般将有默认值的参数放在参数列表的最后 def test2(id: Int, name: String = "default-长空"): Unit = { printf("id : %d name : %s\n", id, name) } }