国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在.NET平臺上使用Scala語言(上):初嘗

2019-11-17 03:58:31
字體:
來源:轉載
供稿:網友
Scala是java平臺上的一門新興起的語言,我也不止一次在博客上提到它。我非常希望它可以取代Java這種劣質語言,讓Java平臺的生產力上一個臺階。事實上,Scala從一開始——或者說“很早”就對生成.NET程序集提供了支持。只可惜,畢竟還是Java平臺的東西,.NET方面的資源少之又少,不過我們還是可以進行一番嘗試的。

有人經常把F#和Scala進行比較——可能都是新語言吧,畢竟C#和Java之爭也有很長的歷史沉淀了。不過,我倒不認為兩者有什么可比性。F#是一門“擁有面向對象特性的函數式編程語言”,而Scala是一門“擁有函數式編程特性的面向對象編程語言”。事實上,從設計思路來說,Scala與C#或Java是同根的,與C#在函數式編程方便更有可比性——雖然它在追求語言靈活性的道路上走得有些極端。因此,我認為Scala可以定位作Java語言的替代品,而F#卻不是C#的替代品。因為一旦F#替代了C#,便幾乎代表函數式編程范式替代了面向對象編程范式。

Scala語言的名字取做“Scalable”,暗指這是一門“伸縮性”強的語言。為什么說它伸縮性強呢?我的理解是它希望可以做幾乎“任何形式/風格”的程序設計。這點并非玩笑,Scala的確在走這條路。Scala的語言非常靈活,語法的“變化”非常復雜。我一直說,這門語言實在是太甜了——到處是糖,而且可謂“無所不用其極”。Scala似乎希望在一切可以節省的地方,如括號,標識符,進行節省。還例如,Scala的import支持引入整個包,包的一部分,整個包但排除某個類,甚至在方法內部引入成員。再例如成員的訪問級別,除了典型的public,PRotected,private之外,它還引入了“當前對象”這種訪問級別(private是相同“類”)。

但是,要知道Scala最終還是編譯為Java平臺上的二進制格式,也就是說Scala的功能事實上是受平臺限制的。因此,使用Scala一些高級功能編譯出的結果,其實是無法被Java語言體現出來的——這也是我為什么會說Scala的定位像是“取代”Java,而不是與Java共存。

至于我嘗試Scala.NET的原因在于:

熟悉Scala語言。目前有一些有趣的,有用的類庫是用Scala實現的,相信以后也會越來越多。
借Scala語言及.NET平臺與Java平臺的差異。
觀察Scala一些語言特性在IL上的表現——畢竟.NET領域對于IL的追求,比Java領域追求Byte Code有群眾基礎得多,且我更熟悉.NET平臺。
此外,由于難免需要在Java平臺上編寫程序,如果可以用Scala的話,我真的不想再使用Java語言了。

對于Scala@.NET來說,Scala官方文檔上的指導是基于Scala 1.4(最新的Scala是2.7.7)的,已經完全不可用。如果在互聯網上查找內容,也寥寥無幾。最終我借助這篇文章起步。

首先,你需要先去下載Scala的SDK,并將其解壓縮。例如,我現在將它存放在D:/scala-2.7.7.final中,其中包含幾個目錄,比較重要的有:

bin      <- 各工具及腳本
lib      <- 工具或類庫的jar包
src      <- 源文件
code     <- 我創建的文件夾,用于存放測試代碼首先,Scala SDK中并不直接包含“好用”的輔助腳本,我們需要使用sbaz.bat獲取.NET的支持腳本。sbaz.bat會調用sbaz.jar包里的程序,它相當于Scala的包或腳本管理器。于是:

D:/scala-2.7.7.final> bin/sbaz.bat install scala-msil執行后,bin目錄下會多出scalac-net.bat及其他一些文件,在lib目錄下則多出三個文件,分別是mscorlib.dll,predef.dll和scalaruntime.dll。然后我們在code目錄下放置一個test.scala文件,內容是:

import System.Console

object test extends application {
    override def main(args: Array[String]) = {
        Console.WriteLine("Hello .NET World!")
    }
}然后使用scalac-net.bat將它編譯成IL文件:

D:/scala-2.7.7.final/code> ../bin/scalac-net.bat test.scala這樣在code目錄下便生成了test.msil,再使用ilasm便可以將其轉化為.NET程序集了:

D:/scala-2.7.7.final/code> ilasm test.msil /exe最后,還需要將在lib目錄里的3個dll文件復制到與test.exe的相同目錄中。

運行,成功。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙岩市| 廉江市| 丹阳市| 鲁山县| 策勒县| 寿光市| 环江| 武功县| 霍邱县| 富蕴县| 社会| 宁夏| 香河县| 句容市| 长丰县| 陵川县| 元谋县| 合川市| 翁牛特旗| 新河县| 靖西县| 黄平县| 万宁市| 汉阴县| 仪征市| 剑川县| 石棉县| 邯郸县| 万荣县| 开化县| 凤台县| 平和县| 深水埗区| 鄂托克旗| 靖远县| 临澧县| 民乐县| 舟曲县| 盘锦市| 文水县| 平乡县|