Scala 包对象

Scala 包对象

包的主要目的是保持文件的模块化和易于维护。因此,我们根据创建的命名空间将项目文件保存在不同的文件夹或目录中,但有时我们希望一些变量、定义、类或对象能够被整个包所访问。但它不可能将定义、数据变量和类型别名直接保存在一个包中。为了做到这一点,我们有了包对象,这样公共数据就可以在包的顶层了。包对象是在scala 2.8版本中引入的。

语法

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

或标准的做法是:

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

在上述语法中,包对象的所有成员对projectx.src.main包中的所有类都是可用的,这个文件将被保存为package.scala,在与包名对应的目录/包 “main “中。

例子:

让我们有一个包对象GFG,其路径如下:

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

另一个文件GFG.scala,里面有主方法。

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

解释:
我们可以看到,由于GFG.scala和package.scala处于同一级别,所以我们有税和费可以直接使用。

+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"
}

输出

scala
csharp
taxfees

包装对象 重要的一点

  • 他们可以扩展其他的类和或混合属性。
package object main extends demovars
{
  val x = a // from demovars
  val y = b // from demovars
  // members
}
  • 它们是存储隐含的好地方,而不是在同伴对象中定义它们。
  • 使用包对象我们可以通过避免使用导入来缩短我们的代码。
package object main
{
  val x = demovars.a // from demovars
  val y = demovars.b // from demovars
  // members
}
  • 每个包只允许有一个包对象,并有相应的目录目录/包名称。
+src
   +eatables
        +food.scala
        +package.scala // package object for eatables folder
  +drinkables
        +drinks.scala
        +package.scala // package object for drinkable folder

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程