我通常學習一門語言,大多一天能寫個簡單小功能。 至今遇到兩個語言把我嚇到了,一個是彙編,一個就是這個貨,scala.java
看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) |
這飄逸的手法。。express
我上一章寫了hello world, 回顧下代碼ide
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
若是是弱語言會正常編譯運行,可是若是是強語言,會出現編譯錯誤。 因此實際上在你聲明spa
var i = 1
的時候,已經被轉譯成了Int。 若是你在交互式窗口就能看到scala
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) } }