多年来一直使用Java来作为主要使用的语言,主要是因为它的代码通常可读性很强,对于大型的企业级项目,体现在代码和众多接口中的设计,能良好的反应项目的架构。但是,不得不承认,Java并不是一门纯粹的面向对象语言,static的存在以及基本数据类型的支持,都有悖OO的理念。除此之外,越来越感觉到,使用Java和丰富的资源虽然几乎能开发出任何目的的程序,但其繁琐的代码量,非常让人恼火。
在众多更加简洁的语言问世的今天,我遇到了Scala,只是抱着试一试的目的开始学习和使用它,确实被它的简洁而深深吸引。这里列举一个精彩的例子:
import java.util._
class DateHelper(number: Int){
def days(when: String) : Date = {
var date = Calendar.getInstance()
when match{
case DateHelper.ago => date.add(Calendar.DAY_OF_MONTH, -number)
case DateHelper.from_now => date.add(Calendar.DAY_OF_MONTH, number)
case _ => date
}
date.getTime()
}
}
object DateHelper{
val ago = "ago"
val from_now = "from_now"
implicit def converInt2DateHelper(number : Int) = new DateHelper(number)
}
import DateHelper._
//sample to use it
val past = 2 days ago
val future = 5 days from_now
println(past);
println(future);
这里发生的事情是整型“2” 和 “5” 被隐式的转换成了DateHelper类的实例,然后利用省略括号的Scala语法特点,调用了DateHelper的days方法,并分别传入了字符串"ago"和"from_now"作为方法参数。在days方法中利用正则匹配分别计算了时间的偏移,并把最终偏移后的时间结果返回。
单从最后的调用例子来看,Scala可以把对象构建、方法的调用和传参像几乎自然语言那样去理解,也隐约能理解到为什么设计者当初创造Scala的时候是有着怎样的一番考虑了。虽然以后不一定会使用到Scala来做项目,但还是决定继续学习和使用Scala来写一写程序。