我一般学习一门语言,大多一天能写个简单小功能。 至今遇到两个语言把我吓到了,一个是汇编,一个就是这个货,scala.

    看spark源码是怎么把我逼疯的。

protected lazy val baseExpression: PackratParser[Expression] =expression ~ "[" ~  expression <~ "]" ^^ {case base ~ _ ~ ordinal => GetItem(base, ordinal)} |TRUE ^^^ Literal(true, BooleanType) |FALSE ^^^ Literal(false, BooleanType) |cast |"(" ~> expression <~ ")" |function |"-" ~> literal ^^ UnaryMinus |ident ^^ UnresolvedAttribute |"*" ^^^ Star(None) |

 

这飘逸的手法。。

 

    我上一章写了hello world, 回顾下代码

object Helloworld {def main(args:Array[String]) = {println("hellowold")}}

为了一个(作为java程序员的)良好的习惯,我还是用main函数。然后我们学会第一个利器:

var

var i = 1;var j = ""var m = 1.0var n = List(1,2);

你会发现scala 非常像动态语言,自动识别类型,但是做个简单测试

var i = 1i = 1.0

如果是弱语言会正常编译运行,但是如果是强语言,会出现编译错误。 所以实际上在你声明

var i = 1

的时候,已经被转译成了Int。 如果你在交互式窗口就能看到

var i=1i:Int = 1

 

所以我在文章最开始定义的四种类型的完全写法是:

 

var i:Int = 1var j:String = ""var m: Double = 1.0var m1 : Float = 1.0fvar n : List[Int] = List(1,2)

 

最后补充一下常识:

scala支持的是java的八种基本类型

 

打印一下 i, 如下:

object Helloworld {def main(args:Array[String]) = {var i : Int = 1;println(i)}}