基本语法:
```scala
// [ ] 符号表示可选
// 如果省略返回值不写,则称为过程
def funName([参数列表]):[返回值]= {
// 函数体
return [表达式]
```
```scala
/*********** 1. 标准写法 ************/
def square(x:Int):Int = {
println(x)
x * x // 这就是返回值
}
/*********** 2. 不写返回类型,Scala编译器会自动判断 ************/
def square(x:Int) = {
println(x)
x * x
}
/*********** 3. 自动返回 Unit *************/
def sayHello(x:String):Unit={
println("hello")
// 默认会自动调用 return () 来返回 ()
}
/*********** 4. 无返回值的写法 ************/
// 如果省略 = ,则什么都不返回,即使是 () 也不返回
def sayHello(x:String){ println(x)}
/********** 5. 传值调用写法 *************/
def square(x:Int):Int = {
println(x)
x * x
}
square(1+2) // 先计算1+2,再计算 3 * 3
/********** 6. 传名调用的写法 *****************/
def square(x:=>Int):Int={
println(x)
x*x
}
square(1+2) // 先不计算,在函数体中用到时才开始计算
/******** 7. 命名参数的写法 ****************/
def printName(first:String, last:String) = {
println(first + ", " + last)
}
printName("First", "Last")
printName(first="First", last="Last")
/************ 8. 参数缺省值的写法 ***********/
def printName(first:String="First", last:String="Last")={
println(first + "," + last)
}
printName() // First,Last
printName("John") // John,Last
printName("John", "Tom") // John,Tom
printName(last="Tom") // First,Tom
/************* 9. 匿名函数的写法 **************/
// (参数列表) => {函数体}
(x:Int) => x*x
(x:Int) => {println(x); x*x}
() => {println("Hello)}
val fun1 = (x:Int) => {println(x); x*x}
fun1(2)
```
- Scala是什么?
- Scala特性
- 开发环境搭建
- 环境搭建
- windows下的环境搭建
- IntelliJ IDEA环境搭建
- Scala关键字
- Hello, World
- 数据类型
- 数据类型
- 数据类型层次结构
- 字面量
- Null类型
- Nothing类型
- Unit类型
- 变量与常量
- type定义类型别名
- 字符串插值器
- 条件控制
- 循环控制
- 数组
- 元组
- 集合
- 集合分类
- List常用操作
- Set常用操作
- Map常用操作
- 函数
- 函数声明与调用
- 函数与方法的区别
- 函数注意事项
- 匿名函数
- 可变参数
- 高阶函数
- 中置表达式
- 函数嵌套
- 函数科里化
- 隐式参数
- 隐式函数
- 闭包
- 类和对象
- Java与Scala的比较
- 有关类与对象概念
- 类
- 类的定义和调用
- 类的继承
- 抽象类
- 单例对象
- 伴生对象和伴生类
- 特质
- 定义特质
- 混入特质
- 抽象类与特质的选择
- 自身类型
- 依赖注入
- this别名
- 样例类
- 枚举类
- 泛型类
- 包与包对象
- 模式匹配
- 基本语法
- 匹配模式
- 偏函数
- 注解
- 运算符
- 正则表达式
- 隐式类
- 异常处理
- 高级类型
- 结构类型
- 复合类型