黑猴子的家:Scala 包/作用域

本文详细探讨了Scala中的包管理,包括包的多种声明方式、作用域规则、包对象的使用以及引入语句的语法。文章还对比了Java、Scala与C#在项目管理上的不同,并提供了实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Java和Scala中,管理项目可以使用包结构,C和C#使用命名空间。
对于package,有如下几种形式

1、形式体现

package com.nick.impatient.people
class Person{
  val name = "Nick"
  def play(message: String): Unit ={
  }
}

2、等同于

package com.nick.impatient
package people
class Person{
  val name = "Nick" 
  def play(message: String): Unit ={
  }
}

3、等同于

package com.nick.impatient{// com和com.nick的成员在这里不可见
//people包在 com.nick.impatient包里面, 只能对impatient包有访问权限,不能无限递归的访问上一层,包是没有继承关系的
  package people{
    class Person{
      val name = "Nick"
      def play(message: String): Unit ={
      }
    }
  }
}

尖叫提示:位于文件顶部不带花括号的包声明在整个文件范围内有效。
通过以上形式,发出总结:
(1)包也可以像内部类那样嵌套,作用域原则:可以直接向上访问。即,子package中直接访问父package中的内容。(即:作用域)
(2)包对象可以持有函数和变量
(3)引入语句可以引入包、类和对象
(4)源文件的目录和包之间并没有强制的关联关系
(5)可以在同一个.scala文件中,声明多个并列的package
(6)包名可以相对也可以绝对,比如,访问ArrayBuffer的绝对路径是:
_root_.scala.collection.mutable.ArrayBuffer

4、样例理解

package com.aa.bb.cc
package user
class Person{

}
package com.china{
  class Persion{

  }
}

尖叫提示:通过次特性,你发现,把所有代码放在一个文件里面是可以的,但是没有这么做的,不方便维护,看着乱

类能怎么用,包基本上就能怎么用

在Scala 不支持Tab键,请使用4个空格,hive里面也是不支持Tab的,在编辑器里面使用Tab没有问题,但是,你再文本编辑器里面,请使用4个空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值