1. 程式人生 > >Scala包和引用

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程式設計》

相關推薦

Scala引用

1.包 Scala包的命名方式有兩種。一種和Java一樣,通過把package子句放在檔案頂端的方式,把整個檔案的內容放進包裡。如: package scala.actors.Actor 另一種方式可以在package子句之後把要放到包裡的定義用花括號括起來。如: pa

Scala 引用

1.包/作用域     在Java和Scala中管理專案可以使用包結構,C和C#使用名稱空間。     對於package,有如下幾種形式:     形式體現: package com.nick.impatient.people class Person{   v

Scala詳解---------引用

摘要: 在本篇中,你將會了解到Scala中的包和引入語句是如何工作的。相比Java不論是包還是引入都更加符合常規,也更靈活一些。本篇的要點包括: 1. 包也可以像內部類那樣巢狀 2. 包路徑不是絕對路徑 3. 包宣告鏈x.y.z並不自動將中間包x和x.y變成可見 4. 位於檔案頂部不帶花括號的包宣告在整個檔

JavaScript學習總結(三、函數聲明表達式、this、閉引用、arguments對象、函數間傳遞參數)

rem [1] incr foo i++ scrip erro ren 推薦 一、函數聲明和表達式 函數聲明: function test() {}; test(); //運行正常 function test() {}; 函數表達式: var test = fun

8.Scalaimport

一.包 //包,平常我們還是想Java那樣去使用包 package scala{ class Cat{ def eat()={println("cat eat ...")} } }

Scala學習之引用訪問修飾符

本文主要內容: 1、包 2、引用 3、訪問修飾符 1、包 Scala採用了Java完整的包機制,不同點是Scala可以進行包的巢狀,而Java只能從包的層級的根開始。 package launch{ class Booster3 } packag

怎樣把引用的jar本項目一起導出成jar文件

微軟雅黑 eclips main方法 我們 family ng- 微軟 content into 之所以要導出Runnable JAR。是由於我們希望將引用到的Jar包與本項目一起進行導出,所以不要選Jar file 選File/Export...然後

動態可視化 數據可視化之魅D3,Processing,pandas數據分析,科學計算Numpy,可視化Matplotlib,Matlab語言可視化的工作,Matlab沒有指針引用是個大問題

com 行數據 操作dom 判斷 互動 otl .org zhang mouse 動態可視化 數據可視化之魅D3,Processing,pandas數據分析,科學計算包Numpy,可視化包Matplotlib,Matlab語言可視化的工作,Matlab沒有指針和引用是個大問

大資料之scala(二) --- 對映,元組,簡單類,內部類,物件Object,Idea中安裝scala外掛,trait特質[介面],的匯入

一、對映<Map> ----------------------------------------------------- 1.建立一個不可變的對映Map<k,v> ==> Map(k -> v) scala> val map

定製開源庫之jar.so的引用

定製開源庫很多時候只是程式碼的開源,這次的要求是把jar包和.so檔案都放到庫裡,中間的過程還是有點曲折的。 首先我找到的是: 優雅的釋出Android開源庫(論JitPack的優越性) 本來我是按照這

Scala練習七引入

包和引入摘要:在本篇中,你將會了解到Scala中的包和引入語句是如何工作的。相比Java不論是包還是引入都更加符合常規,也更靈活一些。本篇的要點包括:1. 包也可以像內部類那樣巢狀2. 包路徑不是絕對路徑3. 包宣告鏈x.y.z並不自動將中間包x和x.y變成可見4. 位於檔案

快學Scala學習筆記及習題解答(5-8類、物件、繼承)

本文scala使用的版本是2.11.7 第五章 類 5.1 基本操作 class Person { // Scala會生成一個私有的final欄位和一個getter方法,但沒有setter val timeStamp = ne

Scala入門到精通——第八節 引入

本節主要內容 包的作用與定義 包的作用域與引入(import)的使用方法 訪問控制 包物件 import高階特性 內部類 包的作用與定義 同java中的包、C++中的名稱空間一樣,Scala中的包主要用於大型工程程式碼的組織同時也解決命名衝突的問

functions and closures are reference types-函式引用型別

Closures Are Reference Types In the example above, incrementBySeven and incrementByTen are constants, but the closures these constants

快學scala 第七章 引入 讀書筆記及習題答案程式碼

chapter 7 包和引入 標籤:快學scala 一、筆記 scala中的包名是相對的,原始檔的目錄與包之間沒有強制的關聯關係,完全可以在同一檔案中為多個包貢獻內容。  包可以包含類、物件和特質,但是不能包含函式和變數的定義,這是java虛擬機器的侷限,但是包物件

快學Scala習題解答—第七章 引入

8 包和引入 8.1 編寫示例程式,展示為什麼 package com.horstmann.impatient 不同於 package com package horstmann packa

Scala的定義、巢狀、物件、引用

1、 包的定義 /** * 自定義Spark.navigation包 */ package spark.navigation{ abstract class Navigator{

重複引用jar造成64k問題的解決方法

今天打包app,打包失敗,丟擲一個異常: Error:The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at

將eclipse java程式打包成jar的總結(包括工程中沒有引用外部jar引用外部jar兩種情況)

一.當eclispe java工程中沒有引用外部jar包時: 選中工程---->右鍵,Export...--->Java--->JAR file--->next-->填寫jar file的路徑及名稱-->next-->next-

maven工程pom.xml配置引用的jar最終打出war中的jar版本號不一致——mvn命令的應用

今天在打包一個maven工程時,發現有個jar包(暫且叫它A.jar),在pom.xml中配置的明明是2.3的版本,打出的war包裡的A.jar怎麼都是1.0的版本,導致war包部署不起來。為此掙扎了1個多小時,pom依賴檢查和環境檢查。最後終於想到可以利用maven的mvn