日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Scala中變高變寬的實現(xiàn):heighten和widen

我們現(xiàn)在需要***一個改良。展示在代碼10.11中的Element的版本并不完全,因為他不允許客戶把不同寬度的元素堆疊在一起,或者不同高度的元素靠在一起。比方說,下面的表達式將不能正常工作,因為組合元素的第二行比***行要長:

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供威遠網(wǎng)站建設(shè)、威遠做網(wǎng)站、威遠網(wǎng)站設(shè)計、威遠網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、威遠企業(yè)網(wǎng)站模板建站服務(wù),十載威遠做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

 
 
 
  1. new ArrayElement(Array("hello")) above  
  2. new ArrayElement(Array("world!"))  

與之相似的,下面的表達式也不能正常工作,因為***個ArrayElement高度為二,而第二個的高度只是一:

 
 
 
  1. new ArrayElement(Array("one", "two")) beside  
  2. new ArrayElement(Array("one"))  

編輯推薦:Scala編程語言專題

代碼10.13展示了一個私有幫助方法,widen,能夠帶個寬度做參數(shù)并返回那個寬度的Element。結(jié)果包含了這個Element的內(nèi)容,居中,左側(cè)和右側(cè)留需帶的空格以獲得需要的寬度。代碼10.13還展示了一個類似的方法,heighten,能在豎直方向執(zhí)行同樣的功能。widen方法被above調(diào)用以確保Element堆疊在一起有同樣的寬度。類似的,heighten方法被beside調(diào)用以確??吭谝黄鸬脑鼐哂型瑯拥母叨?。有了這些改變,布局庫可以待用了。

 
 
 
  1. import Element.elem  
  2. abstract class Element {  
  3.  def contents: Array[String]  
  4.  def width: Int = contents(0).length  
  5.  def height: Int = contents.length  
  6.  def above(that: Element): Element = {  
  7.   val this1 = this widen that.width  
  8.   val that1 = that widen this.width  
  9.   elem(this1.contents ++ that1.contents)  
  10.  }  
  11.  def beside(that: Element): Element = {  
  12.   val this1 = this heighten that.height  
  13.   val that1 = that heighten this.height  
  14.   elem(  
  15.    for ((line1, line2) < - this1.contents zip that1.contents)  
  16.    yield line1 + line2  
  17.   )  
  18.  }  
  19.  def widen(w: Int): Element =  
  20.   if (w < = width) this 
  21.   else {  
  22.    val left = elem(' ', (w - width) / 2, height)  
  23.    var right = elem(' ', w – width - left.width, height)  
  24.    left beside this beside right  
  25.   }  
  26.  def heighten(h: Int): Element =  
  27.   if (h < = height) this 
  28.   else {  
  29.    val top = elem(' ', width, (h - height) / 2)  
  30.    var bot = elem(' ', width, h – height - top.height)  
  31.    top above this above bot  
  32.  }  
  33.  override def toString = contents mkString "\n" 
  34. }  

代碼 10.13 有了widen和heighten方法的Element

【相關(guān)閱讀】

  1. 學習Scala的定義工廠對象
  2. 如何實現(xiàn)Scala的above,beside和toString
  3. Scala學習:使用組合與繼承
  4. 在Scala中定義final成員
  5. Scala程序中如何實現(xiàn)多態(tài)和動態(tài)綁定


分享文章:Scala中變高變寬的實現(xiàn):heighten和widen
當前網(wǎng)址:http://www.dlmjj.cn/article/djcdsdc.html