Scala
重要特性:
1.运行在jvm上面的动态解释型语言
2.与java可以混编
3.类型自动推测
4.并发,分布式
5.接口与抽象类可结合,多实现,多继承
6.高阶函数(最重要特性):高灵活性,参数列表可传递除去java以外的函数
返回值也可为一个函数
7.模式匹配(分支语句,既能匹配值也可匹配字符串与引用类型)
在Scala中单行的变量声明可不用分号结尾
数据类型:
1.包含java所有基本类型与引用类型
2.Unit:表示无值,与其它语言中的void等同
3.Null:便是空值或者空的引用
4.Noting:所有其它类型的子类,表示没有值
5.Any:所有的类型的超累,任何实例都属于Any类型
6.AnyRef:所有引用类型的超类
7.AnyVal:所有值类型的超类
8.None:Option的两个子类之一,另一个是Some,用于安全函数的返回值
9.Nil:长度为零的List
变量与常量的声明:
1.var 用于声明变量
2.val 用于声明常量
构造器声明:
class Person(name:String,age:int) //变量名:变量类型
构造器重写: def this(参数列表){this(name,age)} //必须调用默认构造器
创建对象的时候,除了方法内部不执行,其它的都会执行
被Object 修饰的方法不能传参,可以理解为一个单例的对象,而且修饰的方法都是静态的方法
伴生类:在同一个Scala文件中,若class与object的名字相同,则互为伴生类,伴生对象,它们可以直接访问对方的私有变量
class属性自带get,set方法
循环结构体与java一致
println(1 to 10) // 打印1~10
println(1 until 10) // 左闭又开 1~9
println(1 to (10,2)) // 2为步长 打印 1 , 3 , 5 , 7 , 9
for(i < - 1 to 10){println(i)} 换行打印1~10
可将判断语句写在 循环体的参数列表中
双层for循环可以同时写在一个for循环体的参数列表中:
for(i <- 1 to 10; j <-1 to 10)
Scala不支持自增与自减运算,在函数中return可以省略不写,默认执行到函数最后一行return
函数返回值可以省略,会自动推断函数返回值类型,显示的调用return时,不可省略返回值类型
如果将等号省略掉,则函数自动将返回值丢弃掉,没有返回值的时候可以将等号省略掉.
函数传参默认为常量,在函数内部不能修改参数的值
递归函数不能省略返回值类型
默认值参数函数,直接在函数参数列表中为形式参数赋值,传参顺序为自左向右
嵌套函数: 类似java中的方法中调用另外一个方法
偏应用函数:可以将函数中参数列表中的一个参数作为固定值,多次使用,可以只提供函数中的部分参数来使用
高阶函数
概念:1.函数的参数是函数 2.函数的返回值是函数 3.函数的参数列表和返回值都是函数
柯里化函数:是高阶函数的简写