Scala学习笔记(一)简洁之道

多年来一直使用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来写一写程序。

你可能感兴趣的:(java,scala,Date,object,语言,import)