第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

什么是Scala中的清單,什么時(shí)候需要它?

什么是Scala中的清單,什么時(shí)候需要它?

縹緲止盈 2019-09-19 10:42:14
從Scala 2.7.2開始,有一些叫做ManifestJava類型擦除的解決方法。但是,如何Manifest確切地工作以及為什么/何時(shí)需要使用它?Jorge Ortiz 的博客文章Manifests:Reified Types解釋了其中的一些內(nèi)容,但它沒有解釋如何將它與上下文界限一起使用。那么ClassManifest,有什么區(qū)別Manifest?我有一些代碼(一個(gè)更大的程序的一部分,不能輕易地包含在這里),它有關(guān)于類型擦除的一些警告; 我懷疑我可以通過使用清單解決這些問題,但我不確定如何解決。
查看完整描述

3 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

不是一個(gè)完整的答案,但對于之間的區(qū)別Manifest和ClassManifest,你可以找到一個(gè)例子斯卡拉2.8 Array紙:


唯一剩下的問題是如何實(shí)現(xiàn)通用數(shù)組創(chuàng)建。與Java不同,Scala允許實(shí)例創(chuàng)建new  Array[T],其中T是類型參數(shù)??紤]到Java中不存在統(tǒng)一的數(shù)組表示,如何實(shí)現(xiàn)它?


執(zhí)行此操作的唯一方法是需要額外的運(yùn)行時(shí)信息來描述類型T。Scala 2.8有一個(gè)新的機(jī)制,稱為Manifest。類型對象Manifest[T]提供有關(guān)類型的完整信息T。

Manifest值通常在隱式參數(shù)中傳遞; 并且編譯器知道如何為靜態(tài)已知類型構(gòu)造它們T。


還存在一個(gè)較弱的命名形式ClassManifest,它可以通過只知道一個(gè)類型的頂級類來構(gòu)造,而不必知道它的所有參數(shù)類型。

正是這種類型的運(yùn)行時(shí)信息是數(shù)組創(chuàng)建所必需的。


例:


需要通過將ClassManifest[T]方法作為隱式參數(shù)傳遞給方法來提供此信息:


def  tabulate[T](len:Int,  f:Int=>T)(implicit m:ClassManifest[T]) =  { 

  val  xs  =  new  Array[T](len) 

  for   (i  <- 0  until   len)  xs(i)   = f(i) 

  xs 

作為簡寫形式,可以在類型參數(shù)上使用上下文bound1 T,


(見這個(gè)問題的插圖)


給予:


def  tabulate[T:    ClassManifest](len:Int,  f:Int=>T)  =  { 

  val  xs  =  new  Array[T](len) 

  for   (i  <- 0  until   len)  xs(i)   = f(i) 

  xs 

當(dāng)在類型上調(diào)用tabulate時(shí)Int,或者,或者String,或者List[T],Scala編譯器可以創(chuàng)建一個(gè)類清單作為隱式參數(shù)傳遞給表格。


查看完整回答
反對 回復(fù) 2019-09-19
?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

Manifest旨在重新定義在JVM上運(yùn)行類型擦除的泛型類型(不支持泛型)。然而,他們有一些嚴(yán)重的問題:他們太簡單了,并且無法完全支持Scala的類型系統(tǒng)。因此它們在Scala 2.10中被棄用,并被替換為TypeTags(這實(shí)際上是Scala編譯器本身用于表示類型的內(nèi)容,因此完全支持Scala類型)。



查看完整回答
反對 回復(fù) 2019-09-19
  • 3 回答
  • 0 關(guān)注
  • 544 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號