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