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编程》

时间: 2024-10-05 11:22:13

Scala包和引用的相关文章

Scala详解---------包和引用

包和引入 摘要: 在本篇中,你将会了解到Scala中的包和引入语句是如何工作的.相比Java不论是包还是引入都更加符合常规,也更灵活一些.本篇的要点包括: 1. 包也可以像内部类那样嵌套 2. 包路径不是绝对路径 3. 包声明链x.y.z并不自动将中间包x和x.y变成可见 4. 位于文件顶部不带花括号的包声明在整个文件范围内有效 5. 包对象可以持有函数和变量 6. 引入语句可以引入包.类和对象 7. 引入语句可以出现在任何位置 8. 引入语句可以重命名和隐藏特定成员 9. java.lang.

Scala基础05:包与引用

Scala通过不同的包能使用很多类型的表达式,而包的引入在Scala中相当灵活.包是用来管理名称的. 包的定义 在文件顶部,使用package定义包,与java一样. package cn.sjq.scala 嵌套形式的包定义: package com{ package horstmann{ package impatient{ class Employee{ // ... } } } } Scala的这种写包的方法使用的并不多.Scala写的Play框架使用的较多. 与对象和类的定义不同,同一

DOS环境下含包并引用第三方jar的java程序的编译及运行

DOS环境下含包并引用第三方jar的java程序的编译及运行 1.程序目录机构 bin:class文件生成目录 lib:第三方jar包目录 src:源程序文件目录 2.程序代码: 3.程序编译 javac –classpath .;..\lib\commons-lang-2.3.jar -d ..\bin com\Test.java 4.编译后的程序目录: 5.运行程序及结果显示 java -classpath .;..\lib\commons-lang-2.3.jar com.Test

Java中构造方法,包的引用,final,super等词的概括

一.构造方法:一个类 被实例化 也就是被new的时候 最先执行的是 构造方法,在java类中,如果不显示声明构造函数,JVM 会给该类一个默认的构造函数.一个类 可以有多个构造函数.构造函数的主要作用 一是用来实例化该类.二是 让该类实例化的时候执行哪些方法,初始化哪些属性.当一个类声明了构造函数以后,JVM 是不会再给该类分配默认的构造函数.其实构造函数是用来对一个类以及变量进行实例化. 二.包的引用,包的引用有两种方式 一种是常见的import,第二种是在类的前面加上packagename.

Scala包和引入

包 在Scala中,包的作用域和其他作用域一样地支持嵌套,在下一层作用域中可以访问上一层作用域中的名称. package com { package horstmann { object Utils { def percentOf(value: Double, rate: Double) = value * rate / 100 } package impatient { class Employee { def giveRaise(rate: scala.Double) { var salar

Scala包

#引入包的全部成员的办法 import scala.collection._ #引入同一个包中的几个成员 import scala.collection.{A,B} #重名 要 重命名 import scala.collection.mutable._ import java.util.{HashMap =>JavaHashMap} #或隐藏 import java.util.{HashMap=>_,空格_} #默认引入的包 import java.lang._ import scala._

如何在制作jar包时引用第三方jar包

我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利用好压打开jar包,果然如此.里面只有一行 Manifest-Version: 1.0 需添加Main-Class.在本例中,添加如下: Main-Class: com.luoluo.TestUse.activemq.ActiveMQStateMain 上面,有几点需要注意: 1. Main-Cla

有关打包成可执行jar包后引用jar包中配置文件问题

一 问题由来 有时候我们做一些项目时,需要将一些配置信息写入配置文件中,以供调用.比如说这样: 如果我们需要在Demo.java中读取config.txt这个文件中的配置信息,在这种工程目录下是可以使用File来读取的,但是打包成jar后,使用File将不能读取到config.txt了,除非将这个配置信息放在jar包的外面. 假如说我们用File来读取文件: BufferedReader reader = new BufferedReader(new FileReader(new File("r

Eclipse没有权限操作rt.jar中的Sun包,引用出错。

1.如图 2.Eclipse引用rt.jar下的sun包内容,将会导致以上的错误.原因是Eclipse没有权限,需要手动启用,操作步骤如下 项目上右键点击Properties -->> Java Build Path -->> Libraries 3.保存之后就不会出现错误.