scala学习笔记6:函数基础

38 阅读2分钟

scala学习笔记


@TOC


前言

在Scala当中,函数是一等公民,像变量一样,既可以作为函数的参数使用,也可以将函数赋值给一个变量. ,函数的创建不用依赖于类或者对象,而在Java当中,函数的创建则要依赖于类、抽象类或者接口,


一、函数基础

"函数式编程"是一种"编程范式"(programming paradigm)。

  • 它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数 调用。
  • 函数式编程中,将 函数也当做数据类型,因此可以接受函数当作输入(参数)和 输出(返回值)。
  • 函数式编程中,最重要的就是函数
def functionName ([参数列表]) : [return type] = {
   function body
   return [expr]
}
  1. 函数声明关键字为def (definition)
  2. [参数名: 参数类型], ...:表示函数的输入(就是参数列表), 可以没有。 如果有,多个参数使用逗号间隔
  3. 函数可以有返回值,也可以没有
  4. 指明类型: 返回值类型 = 不指明返回值: = 表示返回值类型不确定,使用类型推导完成 没有类型和等号: 表示没有返回值,return 不生效
  5. 如果没有return , 默认以执行到最后一行的结果作为返回值

二、参数&返回值类型

1.有参数,有返回值类型 2.无参数,有返回值类型 3.有参数,无返回值类型 4.无参数,无返回值类型 5.多参数,有返还值类型 6.多参数,无返回值类型 7.可变参数,一般放在最后 类型后面加上星号*,底层是个WrappedArray的数组

fun1(1,"bb","cc")

    def fun1(a1:Int,args: String*): Unit ={
      println(a1+"**"+args)
    }
  }
//  1**WrappedArray(bb, cc)

8.默认参数,放在后面,不和可变参数一起使用

    def fun1(name:String,city:String="HF"): Unit ={
      println(name+"**"+args)
    }
  }

三、至简原则

换句话说,就是能省就省略 1.如果函数没有形参,调用时 可以不带(),调用的时候也不能代() 2.如果加了(),但是无参数,调用的时候可加可不加() 3. return关键字可以省略:Scala中的函数可以根据函数体最后一行代码自行推断函数返回值类型,但是 4. 如果有return 关键字类型,那么返回值类型必须指定, 5. 如果返回值类型为unit,那么return的类型无效 6.如果函数只有一行,{}可以省略 7.返回值类型如果可以自动推断,那么返回值类型也可以省略 8.如果无返回值类型,那么可以省略= 9.如果只关心处理逻辑,函数名称可以省略

总结

面向对象编程 是以对象为基础的编程方式。在scala 中函数式编程和面向对象编程融合在一起了