Scala包和引用
2015-09-17 12:27
197 查看
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编程》
相关文章推荐
- Python动态类型的学习---引用的理解
- Windows下Scala环境搭建
- Lua模块与包学习笔记
- Shell脚本中引用、调用另一个脚本文件的2种方法
- vbs引用另一个vbs的代码
- C++中引用的使用总结
- C++中引用(&)的用法与应用实例分析
- 关于"引用"的几点说明介绍
- 浅析PHP原理之变量分离/引用(Variables Separation)
- 引用全局程序集缓存内的程序集的方法
- asp.net中javascript的引用(直接引入和间接引入)
- 浅析C和C++函数的相互引用
- C/C++中指针和引用之相关问题深入研究
- Windows7下安装Scala 2.9.2教程
- C++标准之(ravalue reference) 右值引用介绍
- c++ 指针与引用的区别介绍及使用说明
- perl中子程序中参数的两种引用(传递)方式介绍
- PHP 引用是个坏习惯
- php中引用符号(&)的使用详解
- php 引用(&)详解