我一般学习一门语言,大多一天能写个简单小功能。 至今遇到两个语言把我吓到了,一个是汇编,一个就是这个货,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)}}