操练布局库所有这些元素的好玩儿的方法就是写一个画给定数量边界的螺旋的程序。这个Spiral程序,展示在代码10.14中,是这么做的:
51CTO编辑推荐:Scala编程语言专题
代码 10.14 Spiral程序
- import Element.elem
- object Spiral {
- val space = elem(" ")
- val corner = elem("+")
- def spiral(nEdges: Int, direction: Int): Element = {
- if (nEdges == 1)
- elem("+")
- else {
- val sp = spiral(nEdges - 1, (direction + 3) % 4)
- def verticalBar = elem('|', 1, sp.height)
- def horizontalBar = elem('-', sp.width, 1)
- if (direction == 0)
- (corner beside horizontalBar) above (sp beside space)
- else if (direction == 1)
- (sp above space) beside (corner above verticalBar)
- else if (direction == 2)
- (space beside sp) above (horizontalBar beside corner)
- else
- (verticalBar above corner) beside (space above sp)
- }
- }
- def main(args: Array[String]) {
- val nSides = args(0).toInt
- println(spiral(nSides, 0))
- }
- }
因为Spiral是个带有合适签名的main方法的独立的对象,所以它是个Scala程序。Spiral带一个命令行参数,一个整数,并且以特定数量的边界画一个螺旋。例如,可以像展示在下面的左边那样画一个六边界的螺旋,或者右边的那样更大的螺旋:(略)
【相关阅读】