scala基础
一、基础语法
1、声明变量
声明val变量(后续无法改变):val result=1+1,后续的变量是可以使用的。例如2*result。
声明var变量(后续可以改变):var myresult=1,myresult=2。
指定类型无论是val还是var,都可以指定类型,不指定会根据值,自动判断:val name:String=null,val nmae:Any="leo"(需是双引号)
声明多个变量:可以把多个变量放在一起声明:val name1,name2:String=null
2、数据类型和操作符
基本数据类型:Byte Char Short Int Long Float Double Boolean,scala没有数据类型的概念,统一都是类。scala会自己负责基本数据类型和引用类型的转换操作。可以直接调用函数:1.toString(),1.to(10)
类型的加强版类型:scala使用很多加强类给数据类型增加了很多功能或函数。例如String类通过StringOps类增加了大量函数,例如"Hello".toSeq.intersect("World"),先隐式转换为另一个类型,转换后的类型会有很多函数。
3、基本操作符
很多都一样,比如+ - * / % & | ^ >> << 等,但是scala中,这些操作符其实是数据类型的函数,比如1+1可以写作1.+(1),1.to(10)又可以写作1 to 10,scala中没有++、--,比如counter=1,counter++是错误的,只能是counter+=1。
4、函数调用方式
例如,import scala.math._,sqrt(2),pow(2,4),min(3,Pi),如果调用函数时,不需要传递参数,则scala允许调用函数时省略括号,例如:"Hello World".toSeq.distinct
5、apply函数
scala的object中,可以声明apply函数。而使用“类名()”的形式,其实就是“类名.apply()”的一种缩写。通常使用这种方式来构造类的对象。例如"Hello World"(6),(就是索引第6个位置的字符),因为在StringOps类中有def apply(n:Int):Char的函数定义,所以"Hello World"(6),实际上是"Hello World".apply(6)的缩写。例如Array(1,2,3)实际上是用Array object的apply()函数来创建Array类的实例,也就是一个数组。