Escala | Límite inferior

Type Bound básicamente es un tipo de restricción en el parámetro o la variable. Mediante el uso de estos límites de tipo podemos establecer límites para las variables. Estos límites ayudan a poner nuestro código en ejemplos del mundo real. Necesitamos imponer ciertas limitaciones y límites a cada factor en la vida real, eso es lo que hacen los límites de Tipo en Scala.

Hay principalmente 2 tipos de límites de tipo:

  • Límite de tipo superior
  • Límite de tipo inferior
  • Estaremos más preocupados por los Límites Inferiores en esta sección. Los límites inferiores de tipo se utilizan para declarar un supertipo de otro tipo. Un límite inferior se denota por >: . Cualquier declaración de límite inferior se puede escribir como ‘[T>:S]’ . Aquí T es un parámetro de tipo y S es un tipo. La declaración de límite inferior anterior significa que el parámetro de tipo T debe ser el mismo que S o un supertipo de S.

    Entendamos sobre el supertipo, supongamos que escribimos S>: T, entonces esta declaración de límite inferior siempre tiene T igual a S o menor que S, lo que significa que T está vinculado en este caso. Entonces podemos decir que T es un supertipo de S.

    Sintaxis:

    [T >: Demo[T]]

    En el caso anterior, hemos definido un límite inferior desde el parámetro de tipo T hasta el tipo Demo. Y T debe ser un Demo o un supertipo de tipo Demo.

    Tomemos otro ejemplo
    si declaro todas las clases en cierto formato como se muestra a continuación:

    trait Food
    class eatables extends Food
    class drinks extends Food
    class fruits extends eatables
    class vegetables extends eatables
    class cold_drinks extends drinks
    class hot_drinks extends drinks
    
    class position[A](val place:A) 
    

    Ahora todas las clases, así como las subclases, se han declarado utilizando las declaraciones anteriores. Entonces, si consideramos la declaración position[A], aquí position es genérica y A es del tipo abstracto. Esto se puede simplificar aún más, la posición [A] indica que el valor requerido para pasar a lugar debe ser del tipo A. Lo que significa que si doy una posición de comando [frutas], se creará con una instancia de Frutas. Así que para comprobar esto vamos a ver un ejemplo:

    new position[fruits](new fruits)
    new position[fruits](new drinks)
    new position[eatables](new vegetables)

    En el ejemplo dado anteriormente, notaremos que la primera declaración se compilará, pero la segunda declaración mostrará errores porque las frutas y las bebidas no son del mismo tipo. Por otro lado, se compilará la tercera declaración porque el vegetal es un subtipo de comestibles. Ahora usando algunos comandos de límite inferior en las declaraciones anteriores:

    class position[A >: fruits](val place=A)

    Con esta declaración podemos decir que podemos posicionar cualquier supertipo de frutas, lo que significa comestibles y Alimentos. Entonces, con esto definitivamente podemos ver que los límites inferiores de Scala pueden ser muy útiles y adoptivos si se usa alguna lógica para cualquier ejemplo del mundo real. Por lo tanto, podemos agregar todas las limitaciones y restricciones de la vida real sobre nuestras variables que estamos usando en el lenguaje de codificación.

    Ejemplo:

    // Scala Program To Demonstrate Scala Lower Bound
    class GeeksforGeeks
    class Author extends GeeksforGeeks
    class Geeks extends GeeksforGeeks
      
    class ComputerSciencePortal
    {
        // Declaration of Lower bound
        def display [T >: Geeks](d : T)
        {
            println(d)
        }
    }
      
    // Object created
    object ScalaUpperBounds
    {
        // Driver code
        def main(args: Array[String])
        {
      
            val geeksforgeeks = new GeeksforGeeks
            val author = new Author
            val geeks = new Geeks
      
            val computerscienceportal = new ComputerSciencePortal
      
            computerscienceportal.display(geeksforgeeks)
            computerscienceportal.display(geeks)
            computerscienceportal.display(author)
        }
    }
    
    Producción:

    GeeksforGeeks@506e1b77
    Geeks@4fca772d
    Author@9807454
    

    Aquí, el límite inferior se define en la clase ComputerSciencePortal, y GeeksforGeeks es la clase Super de Author. se acepta en cota inferior.

    // Scala Program To Demonstrate Scala Lower Bound
    class Principal
    class Teacher extends Principal
    class Student extends Teacher
      
    class School
    {
        // Declaration of lower bound
        def display [T >: Teacher](t: T)
        {
            println(t)
        }
    }
      
    // Object created
    object ScalaUpperBounds
    {
        // Driver code
        def main(args: Array[String])
        {
            // Defined new variable
            val principal = new Principal
            val teacher = new Teacher
            val student = new Student
      
            val school = new School
              
            school.display(principal)
            school.display(teacher)
            school.display(student)
    }
    }
    
    Producción:

    Principal@506e1b77
    Teacher@4fca772d
    Student@9807454
    

    Aquí, hemos definido el límite inferior en Class School, es decir, [T >: Teacher], lo que implica que el método de visualización acepta el objeto de la clase Principal o una subclase de este (es decir, Teacher) o una subclase de la clase Teacher (es decir, Student), lo que significa que la superclase de El maestro será aceptado.

    Publicación traducida automáticamente

    Artículo escrito por ShikharMathur1 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 *