scala语法的省略

【scala】语法的省略

我们知道在语法方面,Java是冗长繁杂的,但是JAVA的可读性非常好。

而Scala的语法并不像JAVA那样冗长,但是又不失可读性。

而且Scala语法里有很多可以省略简化的地方。在这里我们记录一下常见的语法省略。

1. 变量声明中的省略

首先是我们可以省略数据类型,因为Scala有自动的类型判断机制。

对于变量的声明可以省略它的数据类型:

var  myVar :String = “Scala” // 完整写法
var  myVar = "Scala" // 省略的写法

但是要注意,当我们使用下划线“_”来给变量赋默认值的时候,不能省略返回值类型

var myVar : String = _ // 这里的String不能省略

2. 方法声明时的省略

其次对于方法也是可以省略它的返回值数据类型:

而且我们也可以省略掉return,方法会将最后一个计算结果当作返回结果返回

但是定义递归方法的时候,不能省略返回值类型

参考代码:

//1. 定义方法factorial, 用来计算某个数字的阶乘
def factorial(n:Int):Int = if(n == 1) 1 else n * factorial(n - 1)
//2. 调用方法, 获取5的阶乘.
val result = factorial(5)
//3. 将结果打印到控制台上.
println("result: " + result)

方法后的等于号也可以省略掉

但是括号内的参数的参数类型不能省略

//我们定义一个add方法,参数为两个Int类型,返回值为Int类型
def add(a:Int,b:Int)Int = { return 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 // 等号和大括号都没写,这样写是错误的!

3. 示例

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.

4. 方法调用时的省略

当我们在调用无参方法的时候也可以省略掉后边的圆括号。

var myCounter = new Counter;
//省略掉了圆括号var myCounter = new Counter();此时调用的是Counter的无参构造=

myCounter.add()//没省略

println(myCounter.current)//省略了

注意,一定要是方法没有参数的时候,有参数的时候不能省略。

其次,定义无参数方法时,也可以省略后面的括号

def sayHello() = println("Hello, Scala!") 
//可以改写为
def sayHello = println("Hello,Scala!")

转载自: link.
有部分修改

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值