我一般学习一门语言,大多一天能写个简单小功能。 至今遇到两个语言把我吓到了,一个是汇编,一个就是这个货,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.0 var n = List(1,2);
你会发现scala 非常像动态语言,自动识别类型,但是做个简单测试
var i = 1 i = 1.0
如果是弱语言会正常编译运行,但是如果是强语言,会出现编译错误。 所以实际上在你声明
var i = 1
的时候,已经被转译成了Int。 如果你在交互式窗口就能看到
var i=1 i:Int = 1
所以我在文章最开始定义的四种类型的完全写法是:
var i:Int = 1 var j:String = "" var m: Double = 1.0 var m1 : Float = 1.0f var n : List[Int] = List(1,2)
最后补充一下常识:
scala支持的是java的八种基本类型
打印一下 i, 如下:
object Helloworld { def main(args:Array[String]) = { var i : Int = 1; println(i) } }