首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

Scala教程上画图的例子如何运行结果不对

2014-02-22 
Scala教程上画图的例子怎么运行结果不对?import DrawGraphic.coinabstract class DrawGraphic {val conten

Scala教程上画图的例子怎么运行结果不对?
import DrawGraphic.coin
abstract class DrawGraphic {
  val contents:  Array[String]
  def higth: Int = contents.length
  def width: Int = if(higth == 0) 0 else contents(0).length
//左右连接的方法
  def connect(that: DrawGraphic): DrawGraphic = 
  {
    val this1 = this.comparehigth(that.higth)
    val that1 = that.comparehigth(higth)
    coin(this1.contents ++ that1.contents)
  }
//上下连接的方法
  def splice(that: DrawGraphic): DrawGraphic = 
  {
    val this1 = this.comparewidth(that.width)
    val that1 = that.comparewidth(width)
    coin(
    for((line1,line2) <- this1.contents zip that1.contents)
      yield line1 + line2)
  }
  override def toString = contents.mkString("\n" )
//比较宽度的辅助方法
  def comparewidth(n: Int): DrawGraphic = 
  {
    if(n <= width)
      this
    else
    {
      val left = coin('-',(n-width)/2,higth)
      val right = coin('-',n-width-left.width,higth)
      left connect this connect right
     }
  }
//比较高度的辅助方法
  def comparehigth(h: Int): DrawGraphic = 
  {
    if(h <= higth)
      this
    else
    {
      val top = coin('+',width,(h-higth)/2)
      val bot = coin('+',width,h-higth-top.higth)
      top splice this splice bot
     }
  } 
}
//伴生对象及工厂方法
object DrawGraphic {  
  class ArrayDraw(val contents: Array[String]) extends DrawGraphic
  private class LineDraw(line: String) extends DrawGraphic {
    val contents = Array(line)
    override val width = line.length
    override val higth = 1
  }
  private class Graphic(ch: Char,width: Int,higth: Int) extends DrawGraphic {
    private val lines = ch.toString * width
    val contents = Array.fill(higth)(lines)
  }
  def coin(contents: Array[String]): DrawGraphic = new ArrayDraw(contents)
  def coin(line: String): DrawGraphic = new LineDraw(line)
  def coin(ch: Char,width: Int,higth: Int): DrawGraphic = new Graphi(ch,width,higth)
}
以上代码就是书上的例子,写完后,自己new了一个实例运行进行测试,发现结果跟预期不一样,求Scala高手指点:println(new ArrayDraw(Array("Mouse")) connect new ArrayDraw(Array("Cat"))) Scala ?编程
[解决办法]
Scala代码写的和java一样,:-(

热点排行