一句印象深入的話,Alan Kay(Smalltalk發明者)說得一句話:
「I’m not against types, but I don't know of any type systems that aren't a complete pain, so I still like dynamic typing」。
並非靜態類型很差,只是靜態類型的實現太讓他痛苦了,因此他只好喜歡動態類型(語言)。
但Scala就是一個實現良好的靜態類型語言,帶有不少動態語言的特色,動靜結合得很是好,很舒服,固然,也很差學。題外說一句:Scala還能當腳本語言用,這完全糾正了個人「這是動態語言的特權」的舊思想。
來看看Scala的foreach和for枚舉功能,就知道它有多函數式和「動態」了。
scala> Array("a1", "a2", "a3").foreach((a: String) => print(a + ' ')
a1 a2 a3
進一步,省略參數的類型聲明,Scala是能夠進行類型推斷的,這很動態:
scala> Array("a1", "a2", "a3").foreach(a => print(a + ' '))
a1 a2 a3
再進一步,甚至省略了參數也能玩得轉:
scala> Array("a1", "a2", "a3").foreach(print)
a1a2a3
接下來看看for,很簡單:
scala> for (a <- Array("a1", "a2", "a3")) println(a)
a1
a2
a3