我们直到JAVA在语法方面是冗长的,但是JAVA的可读性非常好。
在Scala的语法并不像JAVA那样冗长,但是又不失可读性,我们这里记录一下常见的语法省略。
首先是我们可以省略数据类型,因为Scala有自动的类型判断机制。
完整写法 var myVar :String = “Scala”;
我们可以省略掉类型声明,让它来自己判断 var myVar = “Scala”;
其实方法也是可以省略返回数据类型的。
完整写法 def add(a:Int,b:Int) :Int = { return a+b } //我们定义一个add方法,参数为两个Int类型,返回值为Int类型
我们还可以省略掉return,方法把最后一个计算结果当作返回结果返回。
def add(a:Int,b:Int) :Int = { a+b }
我们这里可以将方法的返回类型和等号省略掉,让语言自己来判断。
def add(a:Int,b:Int) { a+b }
当我们方法块中的语句只有一行的时候,我们可以省略到大括号。
def add(a:Int,b:Int) :Int = a+b ;
当我们方法块中的语句只有一行的时候,我们可以省略到大括号的同时省略掉返回值类型。
def add(a:Int,b:Int) = a+b ;
但是一定要注意,我们要么省略等于号,要么省略大括号。两者不能同时省略。
def add(a:Int,b:Int) a+b ;//等于号和大括号都没写,这样写是错误的!
示例
class Counter{
private var value = 0;
def add():Unit = value+= 1//等同于def add() { value+=1 }
def current() { value } //等同于 def current() :Int = value;
}//注意,scala中没有i++一说,只有i+=1.
当我们在调用无参方法的时候也可以省略掉后边的圆括号。
var myCounter = new Counter;//省略掉了圆括号var myCounter = new Counter();
myCounter.add();//没省略
println(myCounter.current);//省略了
注意,一定要是方法没有参数的时候,有参数的时候不能省略。