📜  在 Scala 中加高和加宽

📅  最后修改于: 2022-05-13 01:55:12.793000             🧑  作者: Mango

在 Scala 中加高和加宽


Heighten 和 Widen 是使客户端能够将不同宽度的元素彼此叠放或将不同高度的元素并排放置所需的功能。这些函数采用宽度或高度,并分别返回具有相同宽度或高度的元素。

例如,计算以下表达式将无法正常工作,因为组合元素中的第二行比第一行长:

new ArrayElement(Array("geeks")) above 
new ArrayElement(Array("forgeeks"))

同样,计算以下表达式也无法正常工作,因为第一个 ArrayElement 的高度为 2,而第二个的高度仅为 1:

new ArrayElement(Array("yes", "no")) beside 
new ArrayElement(Array("yes"))

下面的代码片段包含一个私有函数widen ,它接受一个宽度并返回该宽度的元素。结果包含此元素的内容,该元素居中,向左和向右填充了实现所需宽度所需的任何空格。类似地,它包含另一个私有函数heighten ,它在垂直方向执行相同的函数。上面调用了 widen 方法以确保放置在彼此之上的元素具有相同的宽度。类似地, beside调用了 heighten 方法,以确保彼此并排放置的元素具有相同的高度。

例子:

// Widen function
def widen(w: Int): Element =
  
// if w is less than or equal to the width of the Element
// then do nothing
if (w <= width) this 
else{
  
    // if w is greater than the width of the Element
    // then add padding of spaces
  
    // half padding on the left
    val left = elem(' ', (w - width) / 2, height)
  
    // half padding on the right
    var right = elem(' ', w - width - left.width, height)
  
    left beside this beside right
}
  
// Heighten function
def heighten(h: Int): Element =
  
// if h is less than or equal to the height of the Element
// then do nothing
if (h <= height) this 
else{
  
    // if h is greater than the height of the Element
    // then add padding of spaces
  
    // half padding on the top
    val top = elem(' ', width, (h - height) / 2)
  
    // half padding at the bottom
    var bot = elem(' ', width, h - height - top.height)
  
    top above this above bot
}