Aumentar y ampliar en Scala

Aumentar y Ampliar son las funciones necesarias para permitir a los clientes colocar elementos de diferentes anchos uno encima de otro, o colocar elementos de diferentes alturas uno al lado del otro. Estas funciones toman un ancho o un alto y devuelven un elemento que tiene el mismo ancho o alto respectivamente.

Por ejemplo, evaluar la siguiente expresión no funcionaría correctamente, porque la segunda línea del elemento combinado es más larga que la primera:

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

Del mismo modo, evaluar la siguiente expresión tampoco funcionaría correctamente, porque el primer ArrayElement tiene una altura de dos y el segundo una altura de solo uno:

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

El fragmento de código a continuación contiene una función privada widen , que toma un ancho y devuelve un elemento de ese ancho. El resultado contiene el contenido de este elemento centrado y acolchado a la izquierda y a la derecha con los espacios necesarios para lograr el ancho requerido. Del mismo modo, contiene otra función privada heighten , que realiza la misma función en la dirección vertical. El método widen es invocado por arriba para asegurar que los Elementos colocados uno encima del otro tengan el mismo ancho. De manera similar, side invoca el método de altura para garantizar que los elementos colocados uno al lado del otro tengan la misma altura.

Ejemplo:

// 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
}

Publicación traducida automáticamente

Artículo escrito por muskan_garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *