成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala 2.8新特性之命名參數(shù)概覽

開(kāi)發(fā) 后端
原定于6月發(fā)布的Scala 2.8跳票了,不過(guò)這并不妨礙我們預(yù)先看一看其中的新特性。Scala 2.8中一個(gè)重要的新特性就是命名參數(shù)的加入。

51CTO編輯推薦:Scala編程語(yǔ)言專題

Scala 2.8引入了新的特性——命名參數(shù)——這意味著我們可以通過(guò)使用參數(shù)名來(lái)指定參數(shù)。命名參數(shù)可以避免在參數(shù)類型相同的情況下混淆各個(gè)參數(shù)的含義,增強(qiáng)了代碼的可讀性。

  1. def resize(width: Int, height: Int) = { ... }  
  2. resize(width = 120, height = 42

并且,Scala 2.8支持在方法中使用默認(rèn)參數(shù)。在當(dāng)前的版本的Scala中(指2.8之前的版本),只能通過(guò)方法重載來(lái)實(shí)現(xiàn)參數(shù)默認(rèn)值。這在一定程度上導(dǎo)致代碼冗余,而默認(rèn)參數(shù)可以避免這一點(diǎn)。

  1. def f(elems: List[Int], x: Int = 0, cond: Boolean = true)  
  2. f(List(1))  
  3. f(Nil, cond = false

上面的示例同時(shí)示范了命名參數(shù)允許選擇性使用默認(rèn)參數(shù):在f方法的第二個(gè)調(diào)用中,f使用了參數(shù)x的默認(rèn)值,而沒(méi)有使用cond的默認(rèn)值。

編譯器生成copy方法

命名參數(shù)和默認(rèn)參數(shù)一個(gè)非常有用的運(yùn)用是編譯器自動(dòng)為case類生成copy方法。這個(gè)方法采取一種輕量級(jí)的語(yǔ)法來(lái)創(chuàng)建一個(gè)原始實(shí)例的修改拷貝。copy方法具有和被拷貝的case類的基本構(gòu)造方法同樣類型和參數(shù),并且每個(gè)參數(shù)都使用基本構(gòu)造方法中相應(yīng)值作為默認(rèn)值。

  1. case class A[T](a: T, b: Int) {  
  2. // def copy[T'](a: T' = this.a, b: Int = this.b): A[T'] = new A[T'](a, b)  
  3. }  
  4. val a1: A[Int] = A(12)  
  5. val a2: A[String] = a1.copy(a = "someString"

Scala 2.8還未正式發(fā)布,但是其nightly build中已經(jīng)實(shí)現(xiàn)了上述功能。想提前體驗(yàn)下么,點(diǎn)擊此處下載。需要了解更多關(guān)于命名參數(shù)與默認(rèn)參數(shù)的內(nèi)容,請(qǐng)閱讀相應(yīng)的SID

Scala 2.8的所有新特性概述如下:

1.重新設(shè)計(jì)的集合框架。

Scala的集合類的層次結(jié)構(gòu)被重新設(shè)計(jì),以更加規(guī)范,易用,高效。將會(huì)有一份白皮書闡述該設(shè)計(jì)。用戶大部分已有的代碼不會(huì)受到影響,但是那些對(duì)集合類的實(shí)現(xiàn)代碼,比如sequence,set,map,etc.需要修改以適應(yīng)新的集合框架。

2.命名參數(shù)與默認(rèn)參數(shù)。

方法的參數(shù)能夠通過(guò)參數(shù)名傳遞,并且參數(shù)能具有默認(rèn)值。

3.Package object

現(xiàn)在不僅可以在源文件中定義package,而且可以使用一些特殊的object來(lái)定義package,該object內(nèi)列出的成員屬于該package。譬如,你可以在這樣的object中添加一些類型別名(type alias),這些類型別名將作為該package的成員從而可見(jiàn)。新的集合框架中使用該功能以保證向后兼容性。比如,List類在新的庫(kù)中位于scala.collection.immutable package中,而之前是位于scala package中。通過(guò)定義如下的package object使得之前使用List的代碼在新的集合框架中任然可用:

  1. package object scala {  
  2.   type List[+A] = scala.collection.immutable.List[A]  
  3.   val List = scala.collection.immutable.List  
  4.     ...  

4. 增強(qiáng)的Scala Swing庫(kù)

scala.swing包中將增添一些新的功能,并且將具有更好的文檔說(shuō)明。

5. continuations的支持

一個(gè)編譯器插件將做為Scala的附屬特性來(lái)支持continuations。這是通過(guò)一個(gè)類型引導(dǎo)的continuation傳遞轉(zhuǎn)換來(lái)完成的。Continuation對(duì)于諸如異步I/O,UI事件處理以及數(shù)據(jù)流并發(fā)之類的高級(jí)控制建造十分有幫助。

6.類型特殊化。
引入一個(gè)使用于類型參數(shù)的annotation:@specialize。該annotation能夠針對(duì)泛型代碼中的基本類型生成特殊的代碼,這樣可以避免昂貴的boxing 和 unboxing操作,以顯著提高代碼的執(zhí)行速度。

7.改善的REPL。
Scala的交互命令控制臺(tái)添加了一些新的功能,特別的命令完成功能將可以使用。

8.Packrat解析合并器(parser combinators)

Scala的解析合并器庫(kù)將升級(jí)至“packrat解析”。這對(duì)于效率有很大幫助,并且允許更多語(yǔ)法格式被表達(dá)為解析子(parser)。

之前版本中大部分被標(biāo)為deprecated的類與方法在2.8中將被去除,并且不再支持Java1.4。class文件的格式會(huì)發(fā)生改變,因此Scala2.8與之前版本二進(jìn)制文件不兼容。但很大程度上保持了源代碼兼容性。

【相關(guān)閱讀】

  1. Scala 2.7.5發(fā)布 解決actor相關(guān)內(nèi)存泄露問(wèn)題
  2. Scala的類型系統(tǒng):取代復(fù)雜的通配符
  3. Scala的類型系統(tǒng) 比Java更靈活
  4. Java程序員,你為什么要關(guān)注Scala
  5. Scala編程語(yǔ)言
責(zé)任編輯:yangsai 來(lái)源: JavaEye博客
相關(guān)推薦

2010-05-10 15:59:12

Fedora 13

2013-03-19 09:37:15

openSUSE 12

2013-05-17 09:24:50

LinuxLinux 3.10

2013-03-25 11:34:27

Windows Blu

2010-05-18 11:05:44

Linux Kerne

2011-07-27 16:12:35

Linux KerneLinux內(nèi)核

2012-08-02 17:38:38

瀏覽器

2009-05-26 16:12:43

Visual StudC#命名

2013-07-03 10:51:31

Fedora 19

2013-06-20 16:36:12

Mac OS XMac OS X 10

2024-08-15 08:00:00

MongoDB數(shù)據(jù)庫(kù)NoSQL

2010-07-15 09:19:24

Scala 2.8Scala 2.8下載Scala 2.8中文

2018-09-19 16:15:18

MySQL直方圖數(shù)據(jù)庫(kù)

2013-05-20 10:25:45

vSphere 5.1vMotion

2009-08-03 18:34:43

TuplizersNHibernate

2017-01-09 16:25:55

Android Shortcuts系統(tǒng)

2021-09-27 06:50:06

MySQL參數(shù)持久化

2010-05-11 13:50:26

Scala

2011-05-20 09:35:22

JDK7

2012-07-02 10:43:49

JVMGroovyJava
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 大香在线伊779 | 国产精品日韩一区 | 99精品国产一区二区青青牛奶 | 亚洲 欧美 日韩 在线 | 国产黄色大片 | 日本天天操 | 欧美亚洲国产一区二区三区 | 草草影院ccyy | 国产免费又色又爽又黄在线观看 | 国产三级精品视频 | 久久91精品久久久久久9鸭 | 亚洲精品久久久久久久久久久 | 欧美va大片 | 91五月天 | 日韩在线观看中文字幕 | 亚洲午夜在线 | 精品中文在线 | 国产一区 | 久热m3u8 | 欧美精品一区二区三区在线四季 | 久草新在线 | 四虎成人av| 久久最新精品 | 一级毛片中国 | 在线观看中文字幕视频 | 国产精品久久久久久久久久久免费看 | 一级大片 | 国产精品成人在线观看 | 成人高清视频在线观看 | 一区视频在线播放 | 九九免费视频 | 99精品久久 | 亚洲狠狠 | 午夜免费视频 | 欧美激情视频一区二区三区在线播放 | 一本一道久久a久久精品蜜桃 | 成年免费视频 | 91一区二区 | 国产免费又黄又爽又刺激蜜月al | 成人乱人乱一区二区三区软件 | 精品久久久久久久久久久久久久久久久 |