1概念说明1)在Scala中,方法和函数几乎是等价的(例如,它们的定义、使用、运行机制等同),但功能的使用更加灵活多样。2)函数式编程是从编程方法(范式)的角度来讨论的,可以这样理解:函数式编程将函数视为一等公民,充分利用函数和支持函数的多种使用方式。3)面向对象编程是一种基于对象的编程方法。4)函数式编程和面向对象编程集成在scala中。方法、函数、函数式编程与面向对象编程的关系分析图2.函数的定义定义:完成某种功能的程序指令(语句)的集合称为函数。基本语法:def函数名([参数名:参数类型],...)[[:返回值类型]=]{语句...return返回值}1)函数声明的关键字是def(definition)2)[参数名称:参数类型],...:表示函数的输入(即参数列表),可选。如果有多个参数,用逗号隔开3)函数中的语句:表示实现某个功能的代码块4)函数可以有返回值也可以没有5)返回值形式1::返回值类型=6)返回值形式2:=表示返回值类型不确定,使用类型推导完成7)返回值形式3:表示没有返回值,return不生效8)如果没有return,执行最后一行的结果默认作为返回值3函数-调用机制函数-调用过程函数-递归调用一个函数在函数体内调用自身,我们称之为递归调用RecursiveCallQuickStartImportant函数递归要遵循的原则(总结):1)当程序执行一个函数时,它会创建一个新的受保护的独立空间(新的函数栈)2)函数的局部变量是独立的,不会相互影响3)递归必须逼近退出递归的条件,否则就是无限递归,返回死掉:)4)当一个函数执行完,或者遇到return,就返回,结果返回给调用它的人.4函数注意事项及详细讨论1)函数的形参列表可以是多个,如果函数没有形参,调用时可以不用()2)形参列表和返回值列表的数据类型可以是值类型和引用类型。3)Scala中的函数可以根据函数体中最后一行代码推断出函数的返回值类型。那么这种情况下,return关键字可以省略4)因为Scala可以自己推断,所以省略return关键字时,返回值类型也可以省略5)如果函数显式使用了return关键字,那么函数return不能使用自推理,这时候应该明确写成:returntype=,当然如果什么都不写,就算有return返回值()6)如果函数明确声明有是没有返回值(declareUnit),那么即使函数体没有返回值使用return关键字7)如果明确函数没有返回值或者返回值类型不确定,那么返回值type可以省略(或声明为Any)8)Scala语法中的任何语法结构都可以嵌套其他语法结构(灵活),即:函数可以在函数中声明/定义,类可以在类中声明,方法可以在方法中声明/定义(默认值),调用函数时,如果没有指定实参,将使用默认值。如果指定了参数,则该参数会覆盖默认值。10)如果函数中有多个参数,每个参数都可以设置一个默认值,那么这个时候传入的参数是覆盖默认值还是赋值给一个没有默认值的参数是不确定的(默认是声明的顺序[从左到右])。这种情况下,可以使用命名参数11)scala函数的形参默认是val,所以在函数中不能修改。12)递归函数执行前无法推断出结果类型,必须在使用Clear返回值类型时使用13)Scala函数支持可变参数1)args是一个集合,通过for循环访问每个值。2)案例演示:写一个函数sum,可以计算1到多个int的和。3)可变参数需要写在形参表的末尾。
