Escala | Objetos del paquete

El principal objetivo de un paquete es mantener los archivos modularizados y fáciles de mantener. Por lo tanto, mantenemos los archivos del proyecto en varias carpetas o directorios diferentes según el espacio de nombres creado, pero a veces queremos que algunas variables, definiciones, clases u objetos sean accesibles para todo el paquete. Pero no es posible mantener definiciones, variables de datos y alias de tipo directamente en un paquete. Para hacerlo, tenemos un objeto de paquete, de modo que los datos comunes pueden estar en el nivel superior del paquete. Los objetos de paquete se introdujeron en Scala versión 2.8.
Sintaxis:

package projectx
package src
package main
object `package`
{
  // using backticks
  val x
  // members
}

o la forma estándar de hacerlo es.

package src
package object main
{
  val x
  // members
}

En la sintaxis anterior, todos los miembros del objeto del paquete están disponibles para toda la clase en el paquete projectx.src.main y este archivo se guardaría como paquete.scala en el directorio/paquete «principal», que también corresponde al nombre del paquete. .
Ejemplo:
Tengamos un objeto de paquete GFG con la ruta de la siguiente manera: –

File Path: ../src/language/GFG/package.scala
package language
package object GFG 
{
  val fees = "fees"
  val tax = "tax"
}

Otro archivo GFG.scala con el método principal.

File Path: ../src/language/GFG/GFG.scala
package language.GFG
  
object GFG
{
  val scala = "scala"
  val java = "java"
  val csharp = "csharp"
}
  
object demo
{
  def main( args : Array[String])
  {
    println(GFG.scala)
    println(GFG.csharp)
    var totalfees= tax + fees
    println(totalfees)
  }
}

Explicación:
Como podemos ver, tenemos impuestos y tarifas directamente disponibles para usar porque GFG.scala y package.scala están al mismo nivel.

+src
   +language
        +GFG.scala
        +package.scala
// Scala program of package object
  
// package eatables.food
  
// Object created
object GFG
{
    val scala = "scala"
    val java = "java"
    val csharp = "csharp"
}
  
// Object created
object demo
{
    // Driver code
    def main( args : Array[String])
    {
        println(GFG.scala)
        println(GFG.csharp)
        var totalfees = tax + fees
        println(totalfees)
    }
}
  
// package object created
object `package`
{
    val fees= "fees"
    val tax= "tax"
}

Producción:

scala
csharp
taxfees
Objetos del paquete Puntos importantes
  • Pueden extender otras clases o mezclar rasgos.
    package object main extends demovars
    {
      val x = a // from demovars
      val y = b // from demovars
      // members
    }
    
  • Son un buen lugar para almacenar implícitos en lugar de definirlos en objetos complementarios .
  • Usando objetos de paquete podemos acortar nuestro código evitando el uso de importaciones.
    package object main
    {
      val x = demovars.a // from demovars
      val y = demovars.b // from demovars
      // members
    }
    
  • Cada paquete puede tener solo un objeto de paquete con el directorio de directorio/nombre de paquete correspondiente.
    +src
       +eatables
            +food.scala
            +package.scala // package object for eatables folder
      +drinkables
            +drinks.scala
            +package.scala // package object for drinkable folder
    

Publicación traducida automáticamente

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