Scala包和引用

1.包

Scala包的命名方式有两种。一种和Java一样,通过把package子句放在文件顶端的方式,把整个文件的内容放进包里。如:

package scala.actors.Actor

另一种方式可以在package子句之后把要放到包里的定义用花括号括起来。如:

package bobsrockets{
	package navigation{
		//在bobsrockets.navigation包中
		class Navigator
		package tests{
			//在bobsrockets.navigation.tests包中
			class NavigatorSuite
		}
	}
}

另外,Scala在所有用户可创建的包之外提供了名为_root_的包,即任何你能写出来的顶层包都被当做是_root_包的成员。如:
//文件launch.scala
package launch{
	class Booster3
}
//文件bobsrockets.scala
package bobsrockets{
	package navigation{
		package launch{
			class Booster1
		}
		class MissionControl{
			val booster1 = new launch.Booster1
			val booster2 = new bobsrockets.launch.Booster2
			val booster3 = new _root_.launch.Booster3
		}
		package launch{
			class Booster2
		}
	}
}

2.引用

Scala的import与Java的import的差异:
 可以出现在任何地方;
 可以指的是(单利或正统的)对象或包
 可以重命名或隐藏一些被引用的成员
e.g
//只引用linalg中的DenseMatrix和DenseVector
import breeze.linalg.{DenseMatrix, DenseVector}
//将DenseMatrix重命名为BDM
import breeze.linalg.{DenseMatrix => BDM, DenseVector}
//引用linalg中的所有成员
import breeze.linalg._
//引用linalg中除了DenseMatrix的所有成员
import breeze.linalg.{DenseMatrix => _, _}

Scala的import的使用规则:
 简单名x。把x包含进引用名集合;
 重命名子句x => y。让名为x的成员以名称y出现;
 隐藏子句x => _。把x排除在引用名集合之外;
 全包括“_”。引用除了前面子句提到的之外的全体成员。如果存在全包括,那么必须是引用选择的最后一个。
另外,“.scala”文件都隐式的添加了如下引用:

	import java.lang._
	import scala._
	import Predef._

3.访问修饰符

Scala和Java修饰符的不同点,如下表:

保护的作用域
Scala里的访问修饰符可以通过使用限定词强调。格式为private[X]或protected[X]的修饰符表达“直到”X的私有或保护,这里X指代某个所属的包、类或单例对象。
特例:被private[this]标记的定义仅能在包含了定义的同一个对象中被访问。


参考文献:

《Scala编程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值