日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > scala學習之update

scala學習之update

來源:程序員人生   發布時間:2016-06-22 15:44:22 閱讀次數:3125次

update:  當帶有括號并包括1到多個參數進行賦值時,編譯器將使用對象的update方法對“括號里的參數和等號右側的值”履行調用

val scores = new scala.collection.mutable.HashMap[String, Int]
scores("Bob") = 100
val bobsScore = scores("Bob")

以上3行代碼,我們創建了1個可變的map來存儲得分情況,然后我們記錄了Bob的得分是100分,最后我們又把Bob的分數取出來了。
這3行代碼看似平淡無奇,實則隱藏了1點點玄機。
第2行實際是調用了HashMap的update方法。
第3行實際是調用了HashMap的apply方法。
我們可以把上面的代碼改寫成下面的等價情勢:

val scores = new scala.collection.mutable.HashMap[String, Int]
scores.update("Bob", 100)
val bobsScore = scores.apply("Bob”)


class SomeClass {  
    defupdate(arg1:Int, arg2:String, arg3:String):String ={  
        println("update method called")  
        arg1+ "|"+ arg2+ "|"+ arg3  
    }  
}     
val obj =new SomeClass  
val result =(obj(1,"key1")="Hello")  
println(result)  

履行后輸出結果為:
update method called
1|key1|Hello

利用 update 時,等號右側的值會作為 update 方法的最后1個參數。


update方法的適用處:

class AddressChanger {
  def update(name: String, age: Int, newAddress: String) = {
    println(s"changing address of $name, whose age is $age to $newAddress")
    //actually change the address
  }
}

我們可以這樣來調用它:
val changer = new AddressChanger()
changer.update("xiao ming", 23, "beijing")


或,我們也能夠這樣來調用它:
val addressOf = new AddressChanger()
addressOf(name = "xiao ming", age = 23) = "beijing"

結果:

changing address of xiao ming, whose age is 23 to beijing


這兩段代碼是等價的。
比較1下,前1種用法顯得中規中矩,沒甚么特別好的,也沒啥特大的毛病。
可是后1種用法就不同了,讀起來很通順,有讀英語語句的感覺:把名字叫做小明,年齡23歲的人的地址改成北京。
如果再給AddressChanger加上1個apply方法,我們還可以寫這樣的代碼:

val currentAddress = addressOf(name = "xiao ming", age = 23)


這樣,讀取和更新的代碼都看起來非常自然。
如果我們把這兩段代碼連起來看:
val currentAddress = addressOf(name = "xiao ming", age = 23)
addressOf(name = "xiao ming", age = 23) = "beijing"

感覺甚好。
addressOf(name = “xiao ming”, age = 23)可以看作1個整體,它就猶如1個可讀可寫的屬性。
我們把它放到賦值語句的右邊,就可以取到小明確當前住址。
我們把它放到賦值語句的左邊,就可以修改小明的住址。
apply和update都是蠻簡單的語言特性,但是加以適合的利用,卻能得到可讀性極強的代碼。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精产国产伦理一二三区 | 亚洲国产福利 | 99热免费在线 | 欧美九九视频 | 国产精品视频一区二区三区, | 成人午夜免费毛片 | 日韩啊v| 日韩电影在线免费观看 | 国产精品美女久久 | 高清18麻豆 | 99精品电影 | 在线欧美一区 | 99久久精品国产免费看不卡 | √8天堂资源地址中文在线 99久久视频 | 天堂аⅴ在线最新版在线 | 精品福利一区二区三区 | 亚洲欧洲在线视频 | 久久久精品国产免费观看一区二区 | 红桃成人av在线播放 | 在线看的av| 欧美久久久久久久久久 | 久久精品免费观看 | 欧美日韩第一区 | 99精品小视频 | 男女涩涩网站 | 久久久精品国产免费观看一区二区 | 最新日韩精品在线观看 | 午夜在线免费观看视频 | 日韩高清免费观看 | 亚洲美女性视频 | 99久久精品国产一区二区三区 | 成人免费一区二区三区视频网站 | 亚洲精品综合在线 | 久久久一区二区 | 亚洲日本国产 | 欧美中文字幕一区二区三区 | 中文字幕+乱码+中文字 | 国产精品国产三级国产a | 精品视频99| 日韩成人影院 | 中文字幕亚洲一区二区三区 |