scala表达式如何导致数组的字符串组成元素

时间:2016-05-23 23:37:15

标签: scala

我正在阅读“Scala编程”中的第10章(组合和继承),并且可以解释一下这个表达式是如何构造的以及它是如何工作的?

def toString = contents mkString "\n"

作者的代码清单如下:

abstract class Element{
  def contents:Array[String]
  def width: Int = if(height==0)0elsecontents(0).length
  def height: Int = contents.length
  def above(that: Element): Element =
      new ArrayElement(this.contents ++ that.contents)
  def beside(that: Element): Element=
              new ArrayElement(
                 for(
                   (line1, line2)<-this.contents zip that.contents
                ) yield line1+line2
              )
  override def toString = contents mkString "\n"
}

1 个答案:

答案 0 :(得分:1)

您可以查看Array的mkString文档。基本上它会在toString的每个元素上调用contents,然后它会在相邻的元素对之间打印分隔符。在您的情况下,分隔符是换行符,因此结果将是一个字符串,其中每个元素contents都在一个单独的行中。