scala是以實作scaleable language為初衷設計出來的一門語言。官方中,稱它是object-oriented language和functional language的混合式語言。并且,scala可以和java程式無縫拼接,因為scala檔案編譯后也是成為.class檔案,并且在JVM上運行。不過,我更關心的是它的scaleable(擴展性)。一門語言到底怎樣才算有擴展性呢?對語言而言什么是它的擴展性呢?
個人拙見,認為語言的擴展性可能包括兩個方面:
1、語言本身的擴展性
2、由此語言寫出來的程式的擴展性
對于第一點,在scala的介紹中提到有些developer可以用scala來定義自己的Domain Specific Language。我想,這一點也許就體現了scala語言本身的擴展性,即它有潛力可以被加工為另一門可用在專門領域中的語言(或許是通過增加某些模型,或某些操作等)。
對于第二點,感觸最深的就是馬上要見到的Tuple。曾經在做一個專案時,希望一個函式可以多回傳兩個引數,而不得不重新定義一個JavaBean(繼承了它的前輩以保留之前的其他回傳值),但是這樣導致上層代碼一片混亂,一會兒是呼叫原先的BaseBean,一會兒又是呼叫新的Bean。如果Java中也能有類似Tuple的東西就太方便了。
文中將描述三個內容:
Tuple -可以將不同型別的資料存盤在一個陣列中
singleton objects - scala中沒有靜態方法和屬性,全部由singleton object(單例物件)來替代
trait - scala中的類interface物,但是可以擁有方法體,并且可以在類實體化時混入,而不需為了包裝某個類而產生子類
Tuples 陣列
Like Lists, tuples are immutable, but unlike Lists, tuples can contain different types of elements. Thus whereas a list might be a List[Int] or a List[String], a tuple could contain both an Int and a String at the same time. Tuples are very useful, for example, if you need to return multiple objects from a method. Whereas in Java, you would often create a JavaBean-like class to hold the multiple return values, in Scala you can simply return a tuple.
val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)
uj5u.com熱心網友回復:
學習學習學習學習學習uj5u.com熱心網友回復:
在函式中,如果作為引數的,好像只到 Tuple20.。。。有點暈uj5u.com熱心網友回復:
case class滿足你,200都ok
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/91525.html
標籤:Spark
上一篇:各位大神,我想利用Spark MLlib庫中的SVM方法對一組img影像進行分類,該怎么實作,麻煩知道的大神指教一下,非常感謝
下一篇:云序列號連接云服務器
