- 变量
- 数据类型
- Scala 实现 break
- Scala 实现 continue
- 高阶函数
- 匿名函数
- 闭包
- 函数柯里化
- 函数参数
- 函数至简原则
- Scala与Java继承方面的区别
- 单例对象(伴生对象)
- 特质
- 集合的使用
- 集合常用的计算
- 模式匹配
- 异常
- 隐式方法
- 隐式参数
- 隐式类
- 隐式解析机制
- 泛型
常量:在程序执行的过程中,其值不会被改变的变量
var 修饰的变量可改变,val 修饰的变量不可改
var 修饰的对象引用可以改变, val修饰的对象则不可改变,但对象的状态(值)却是可以改变的。
注意: 能用常量的地方不用变量
数据类型Scala是完全面向对象的语言,所以不存在基本数据类型的概念,有的只是任意值对象类型(AnyVal)和任意引用对象类型(AnyRef)
- Scala中一切数据都是对象,都是Any的子类
- Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象
- Scala数据类型仍然遵守低精度的值类型向高精度值类型自动转换(隐式转换)
- Scala中的 StringOps 是对Java中的 String 增强
- Unit,对应 Java 中的 void,用于方法返回值的位置,表示方法没有返回值
- Unit,是一个数据类型,只有一个对象就是()。而 void 不是数据类型,只是一个关键字
- Null,是一个类型,只有一个对象就是 null 。它是所有引用类型( AnyRef )的子类
- Nothing,是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数。
分类 :
- 整数类型: Byte、 Short、 Int、 Long
- 浮点类型: Float、 Double
- 字符类型 : Char
- 布尔类型: Boolean
- Unit 类型、 Null 类型和 Nothing 类型
循环将立即终止
// 导入以下包
import scala.util.control._
// 创建 Breaks 对象
val loop = new Breaks;
// 在 breakable 中循环
loop.breakable{
// 循环
for(...){
....
// 循环中断
loop.break;
}
}
Scala 实现 continue
跳过
// 导入以下包
import scala.util.control._
// 创建 Breaks 对象
val inner = new Breaks;
// 循环
for(...){
//....
// 在 breakable 中循环
inner.breakable {
// 循环中断
inner.break;
}
}
}
高阶函数
高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数
object Test {
def main(args: Array[String]) {
println( apply( layout, 10) )
}
// 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
def apply(f: Int => String, v: Int) = f(v)
def layout[A](x: A) = "[" + x.toString() + "]"
}
匿名函数
没有名字的函数就是匿名函数
(x:Int)=>{函数体}
x: 表示输入参数类型; Int:表示输入参数类型; 函数体: 表示具体代码逻辑
闭包闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量 , 可以访问一个函数里面局部变量的另外一个函数
var factor = 3 val multiplier = (i:Int) => i * factor函数柯里化
把一个参数列表的多个参数,变成多个参数列表
def add(x:Int)(y:Int) = x + y函数参数
函数参数指定默认参数值,使用了默认参数
- 无需传递参数,调用默认参数值
- 传递参数,则传递值取代默认值
object Test {
def main(args: Array[String]) {
println( "返回值 : " + addInt() );
}
def addInt(a:Int = 5, b:Int = 7) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
函数至简原则
- return可以省略,最后一行代码作为返回值
- 函数体只有一行代码,省略花括号
- 返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
- 有return,则不能省略返回值类型,必须指定
- 函数明确声明 unit,return 不起作用
- 无返回值类型,省略等号
- 函数无参,声明参数列表,调用时小括号可加可不加
- 函数没有参数列表,小括号省略,调用时必须省略小括号
- 不关心名称,只关心逻辑处理,def 省略
//最后一行代码作为返回值
def f1(name:String): String = {
name
}
//省略花括号
def f2(name:String): String = name
// 返回值类型省略
def f3(name:String)= name
//return , 返回值类型必须指定
def f0(name:String): String = return name
// 明确声明unit,那么即使函数体中使用return关键字也不起作用
Scala与Java继承方面的区别
单例对象(伴生对象)
特质
集合的使用
集合常用的计算
模式匹配
异常
隐式方法
隐式参数
隐式类
隐式解析机制
泛型


