自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Scala中的Spiral程序:把代碼都螺旋在一起

開發(fā) 后端
本文節(jié)選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第十章。Scala是一種針對(duì) JVM 將函數(shù)和面向?qū)ο蠹夹g(shù)組合在一起的編程語言。

操練布局庫所有這些元素的好玩兒的方法就是寫一個(gè)畫給定數(shù)量邊界的螺旋的程序。這個(gè)Spiral程序,展示在代碼10.14中,是這么做的:

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

  1. import Element.elem  
  2. object Spiral {  
  3.  val space = elem(" ")  
  4.  val corner = elem("+")  
  5.  def spiral(nEdges: Int, direction: Int): Element = {  
  6.   if (nEdges == 1)  
  7.    elem("+")  
  8.   else {  
  9.    val sp = spiral(nEdges - 1, (direction + 3) % 4)  
  10.    def verticalBar = elem('|'1, sp.height)  
  11.    def horizontalBar = elem('-', sp.width, 1)  
  12.    if (direction == 0)  
  13.     (corner beside horizontalBar) above (sp beside space)  
  14.    else if (direction == 1)  
  15.     (sp above space) beside (corner above verticalBar)  
  16.    else if (direction == 2)  
  17.     (space beside sp) above (horizontalBar beside corner)  
  18.    else 
  19.     (verticalBar above corner) beside (space above sp)  
  20.   }  
  21.  }  
  22.  def main(args: Array[String]) {  
  23.   val nSides = args(0).toInt  
  24.   println(spiral(nSides, 0))  
  25.  }  
  26. }  
代碼 10.14 Spiral程序

因?yàn)镾piral是個(gè)帶有合適簽名的main方法的獨(dú)立的對(duì)象,所以它是個(gè)Scala程序。Spiral帶一個(gè)命令行參數(shù),一個(gè)整數(shù),并且以特定數(shù)量的邊界畫一個(gè)螺旋。例如,可以像展示在下面的左邊那樣畫一個(gè)六邊界的螺旋,或者右邊的那樣更大的螺旋:(略)

【相關(guān)閱讀】

  1. Scala中變高變寬的實(shí)現(xiàn):heighten和widen
  2. 學(xué)習(xí)Scala的定義工廠對(duì)象
  3. 如何實(shí)現(xiàn)Scala的above,beside和toString
  4. Scala學(xué)習(xí):使用組合與繼承
  5. 在Scala中定義final成員

責(zé)任編輯:book05 來源: Artima
相關(guān)推薦

2018-02-01 21:18:40

戴爾

2020-09-16 11:20:40

PythonBashLinux

2018-07-30 16:04:09

ReactJS代碼HTML

2016-08-12 09:49:06

Intel

2009-11-06 08:57:31

WCF開發(fā)

2013-08-06 09:49:01

2011-01-20 11:42:49

同事

2015-03-05 10:27:56

蘋果IBM

2015-02-09 19:49:19

暢捷通

2015-04-22 17:22:05

eBay京東

2016-09-02 16:49:54

APPVR

2017-11-15 08:26:52

IntelAMD技術(shù)

2015-10-20 16:48:06

AnsibleDocker可擴(kuò)展設(shè)計(jì)

2014-08-12 09:54:35

Web語言編程語言

2013-05-31 09:03:47

SkypeLync集成

2019-06-12 06:52:39

操作系統(tǒng)Windows終端

2020-06-12 11:08:39

應(yīng)用程序集成自動(dòng)化

2009-11-20 12:09:40

ExchangeVPNWindowsServ

2023-03-30 16:23:09

人工智能AI

2015-11-12 10:23:35

5G物聯(lián)網(wǎng)
點(diǎn)贊
收藏

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