真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

好程序員大數(shù)據(jù)學(xué)習(xí)路線分享Scala系列之對(duì)象-創(chuàng)新互聯(lián)

好程序員大數(shù)據(jù)學(xué)習(xí)路線為大家分享Scala系列之對(duì)象

1.?單例對(duì)象

在Scala中沒有靜態(tài)方法和靜態(tài)字段,但是可以使用object這個(gè)語法結(jié)構(gòu)來達(dá)到同樣的目的

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、曲靖網(wǎng)站維護(hù)、網(wǎng)站推廣。

1.scala類似于Java中的工具類,可以用來存放工具函數(shù)和常量

2.高效共享單個(gè)不可變的實(shí)例

3.單例模式

單例對(duì)象雖然類似于Java中的工具類,但它不是,還是一個(gè)對(duì)象,可以把單例對(duì)象名看做一個(gè)貼在對(duì)象上的標(biāo)簽。

package?logging
//使用關(guān)鍵字object定義單例對(duì)象

object?Logger?{
??def?info(message:?String):?Unit?=?println(s"INFO:?$message")
}

單例對(duì)象的使用

//導(dǎo)入單例對(duì)象信息,使之在當(dāng)前類可見

import?logging.Logger.info

class?Project(name:?String,?daysToComplete:?Int)

class?Test?{
??val?project1?=?new?Project("TPS?Reports",?1)
??val?project2?=?new?Project("Website?redesign",?5)
????//調(diào)用單例對(duì)象中定義的方法
??info("Created?projects")??//?Prints?"INFO:?Created?projects"
}

類和單例對(duì)象的區(qū)別是,單例對(duì)象不能帶參數(shù),單例對(duì)象不能用new關(guān)鍵字實(shí)例化,所以沒有機(jī)會(huì)傳遞給它實(shí)例化的參數(shù)。

單例對(duì)象在第一次訪問的時(shí)候才會(huì)初始化。

當(dāng)單例對(duì)象與某個(gè)類同名時(shí),它被稱為類的伴生對(duì)象,類和伴生對(duì)象必須定義在一個(gè)源文件里,類稱為該單例對(duì)象的伴生類,類和他的伴生對(duì)象可以互相訪問其私有成員。

不與伴生類共享名稱的單例對(duì)象被稱為獨(dú)立對(duì)象,可以作為相關(guān)功能的工具類,或者scala應(yīng)用程序的入口點(diǎn)。

2.?伴生對(duì)象

在Scala的類中,與類名相同并且用object修飾的對(duì)象叫做伴生對(duì)象,類和伴生對(duì)象之間可以相互訪問私有的方法和屬性,他們必須存在同一個(gè)源文件中

class?AccountInfo?{
//類的伴生對(duì)象的功能特性并不在類的作用域
//所以不能直接用newUniqueNumber()調(diào)用伴生對(duì)象的方法
var?id?=?AccountInfo.newUniqueNumber()
}

object??AccountInfo?{
??private?var?lastNumber?=?0
??private?def?newUniqueNumber()?=?{
????lastNumber?+=?1;?lastNumber
??}

??def?main(args:?Array[String])?{
??//相當(dāng)于Java中的靜態(tài)方法調(diào)用
????println(AccountInfo.newUniqueNumber())
??}

}
3. apply方法

通常我們會(huì)在類的伴生對(duì)象中定義apply方法,當(dāng)遇到類名(參數(shù)1,...參數(shù)n)時(shí)apply方法會(huì)被調(diào)用

class?AccountInfo?{

}

object??AccountInfo?{
??private?var?lastNumber?=?0
??private?def?apply(arg?:Int)?=?{
????lastNumber?=?arg*2?+?1;?lastNumber
??}

??def?main(args:?Array[String])?{
????println(AccountInfo(1))
??}

}
4.?應(yīng)用程序?qū)ο?/strong>
Scala程序都必須從一個(gè)對(duì)象的main方法開始,可以通過擴(kuò)展App特質(zhì),不寫main方法。

object?Hello?extends??App{
??println("Hello?World")
}

同

object?Hello?{

??def?main(args:?Array[String]):?Unit?=?{
????println("Hello?World")
??}

}
5.提取器

帶有unapply方法的對(duì)象,經(jīng)常用在模式匹配或者偏函數(shù)中。

import?scala.util.Random

object?CustomerID?{

??def?apply(name:?String)?=?s"$name--${Random.nextLong}"

??def?unapply(customerID:?String):?Option[String]?=?{
????val?name?=?customerID.split("--").head
????if?(name.nonEmpty)?Some(name)?else?None
??}
}
//調(diào)用apply方法創(chuàng)建一個(gè)對(duì)象,等價(jià)于CustomerID.apply("Sukyoung")
val?customer1ID?=?CustomerID("Sukyoung")??//?Sukyoung--23098234908
customer1ID?match?{
????//調(diào)用unapply方法,提取name信息
??case?CustomerID(name)?=>?println(name)??//?prints?Sukyoung
??case?_?=>?println("Could?not?extract?a?CustomerID")
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


文章標(biāo)題:好程序員大數(shù)據(jù)學(xué)習(xí)路線分享Scala系列之對(duì)象-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://weahome.cn/article/csgsje.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部