Scala係一隻多範式嘅編程語言,設計初衷係要整合物件導向編程同埋函數式編程嘅各種特性。
編程範式 | 多範型:函數式、物件導向、指令式 |
---|---|
設計者 | Martin Odersky |
編程員 | 洛桑聯邦理工學院編程方法實驗室 |
第一次出現 | 2004年1月20號 |
穩定版本 | 3.0.0 / 2021年5月14號 |
類型系統 | 靜態、強、類型推斷、結構化 |
實作語言 | Scala |
系統平台 | JVM、JavaScript、LLVM(實驗性) |
軟件授權 | 3句版BSD授權條款 |
副檔名 | .scala, .sc |
網站 | www |
啟發語言 | |
Eiffel、Erlang、Haskell、 Java、Lisp、 Pizza、 Standard ML、OCaml、Scheme、Smalltalk、Oz | |
影響語言 | |
Ceylon、Fantom、F#、Kotlin、Lasso、Red、Swift[未記出處或冇根據] | |
Scala運行喺Java平台(Java虛擬機),仲兼容依家嘅Java程式。佢仲可以喺CLDC配置嘅Java ME入面運行。曾經有過另一.NET平台嘅實現,不過該版本已被放棄。
Scala嘅編譯模型(獨立編譯,動態類加載)同Java同埋C#一樣,所以Scala代碼可以用Java類庫(要實現.NET就要用.NET類庫)。
Scala套件包括編譯器同埋類庫,以BSD許可證發布。
洛桑聯邦理工學院嘅Martin Odersky喺2001年基於Funnel嘅工作開始設計Scala。Funnel係將函數式編程思想同埋佩特里網相結合嘅一隻編程語言。 Odersky之前喺Java泛型同埋javac做嘢。Java平台嘅Scala喺2003年底/2004年初發布。.NET平台嘅Scala喺2004年6月發佈。呢隻語言第二個版本,v2.0,喺2006年3月發佈。
Scala 2.8嘅特性包括重新寫過嘅Scala容器庫、命名參數同埋默認參數、包對象,仲有延續性。
2012年1月,出咗版本2.9.1。
2012年4月,出咗版本2.9.2。
Lift係開源嘅Web應用框架,目的係提供類似Ruby on Rails嘅嘢。因為Lift用咗Scala,所以Lift嘅應用程式可以用到目前所有嘅Java庫同埋Web容器。
下面係用Scala編寫嘅典型Hello World程式:
object HelloWorld extends App { println("Hello, world!") }
或者
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
如果呢個程式保存咗做HelloWorld.scala文件,咁樣之後就可以用下面嘅命令行進行編譯:
> scalac HelloWorld.scala
如果要運行:
> scala -classpath . HelloWorld
呢行命令編譯同運行Java嘅「Hello World」程序非常相似。事實上,Scala嘅編譯同埋執行模型同Java係等效嘅,所以佢都可以兼容喺Java嘅構建工具,例如Ant。
直接用Scala解釋器都可以運行呢個程式,用選項-i(從文件加載代碼)同埋選項-e(如果要運行額外嘅代碼,就要實際執行HelloWorld對象嘅方法)就可以:
> scala -i HelloWorld.scala -e 'HelloWorld.main(null)'
下面係可以畀你試用Scala嘅網站:
注意:預設嘅Scala庫SUnit已經喺2.8.0版入面整走咗。
This article uses material from the Wikipedia 粵語 article Scala, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). 呢度嘅所有文字係根據 CC BY-SA 4.0 牌照嘅條款發佈;可能會有附加嘅條款。 Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki 粵語 (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.