四川高速公路建設(shè)集團網(wǎng)站網(wǎng)站設(shè)計與開發(fā)
Scala編程
- 可伸縮的語言
- 面向?qū)ο笈c函數(shù)式編程
- Scala優(yōu)勢
- Scala是兼容的
可伸縮的語言
1、適合構(gòu)建將java組件組裝在一起的腳本
2、用于編寫可復(fù)用組件,并講這些組件構(gòu)建成大型框架
Scala是一門綜合面向?qū)ο蠛秃瘮?shù)式編程概念的靜態(tài)類型編程語言
面向?qū)ο笈c函數(shù)式編程
面向?qū)ο?/p>
和java面向?qū)ο蟮膮^(qū)別:
java是不允許對象的值單獨存在的,比如基礎(chǔ)數(shù)據(jù)類型,并且java不允許以任何對象的成員形式存在的靜態(tài)字段和靜態(tài)方法
scala是純面向?qū)ο蟮?#xff0c;1+2是Int類型的「+」函數(shù)
函數(shù)式編程
首先、函數(shù)式編程中,函數(shù)是一等值的,也就是說他和整數(shù)、字符串一樣,可以作為參數(shù),也可以返回
第二,函數(shù)式編程中,函數(shù)是不應(yīng)該有副作用的,只有接收入?yún)⒉⒎祷亟Y(jié)果兩種方式和外部環(huán)境通信(scala不會強制要求)
Scala優(yōu)勢
Scala是兼容的
Scala程序會被編譯成JVM字節(jié)碼,運行期性能也和Java相當,Scala可以調(diào)用Java方法,訪問Java字段,從Java繼承,實現(xiàn)java接口等等。幾乎所有Scala代碼都重度使用Java類庫
并且,Scala會對Java類進行「再包裝」,比如Scala字符串支持.toInt()方法,但是java只能Integer.parseInt(str)。Scala對于這類由于高級類庫設(shè)計和互操作性之間的矛盾產(chǎn)生問題,采用了隱式轉(zhuǎn)換的方案解決,當類型沒有正常匹配或者代碼選中了java類型中不存在的成員時,Scala便會嘗試隱式轉(zhuǎn)換
在toInt()的事例中,scala會在Java的String類中找toInt()方法,但是JavaString類并沒有這個黨發(fā),不過Scala會找到一個將Java的String轉(zhuǎn)換成Scala的StringOps類的隱式轉(zhuǎn)換,而StringOps中定義了這樣一個方法(toInt),因此當執(zhí)行真正toInt方法前,上述隱式轉(zhuǎn)換就會被應(yīng)用