版权申明:转载请注明出处。

文章来源:http://bigdataer.net/?p=287

排版乱?请移步原文获得更好的阅读体验

1.基础特性

scala中的包和java中的包类似,都是用来在大型工程中给类限定一个命名空间。有如下特性:
(1)包可以像内部类那样嵌套
(2)包路径不是绝对路径。
(3)包声明链net.bigdataer.blog并不会自动将中间包net和bigdataer变为可见。
(4)位于文件顶部不带花括号的包声明在整个文件范围内都有效。

2.包对象

包对象是scala为了突破jvm的限制,将工具函数或者常量类添加到包下面而设计的。这样,一个包既可以包含类、对象、特质也能包含函数或者变量。每个包都有一个包对象,需要在父包中定义,且名字和当前包名一样。举例:

scala    10行

package net.bigdataer
package object blog{
val theme:String = "大数据"
}
package blog{
class Post{
val title = theme //从包中获取常量,这里也可以调用包提供的函数
}
}

包对象被编译后会生成一个.class文件,位于相应的包下面。比如上面的包对象会被编译为blog.class并且位于net.bigdataer包下面。

3.重命名和隐藏方法

由于在scala中可以直接使用java中的类,这样会造成类重名,防止在使用中出现错误,可以在包引入语句中对要引入的类做重命名操作,如:

scala    3行

import java.util.{HashMap => JavaHashMap}
import scala.collection.mutable._

这样,java中的HashMap在使用中就为JavaHashMap而避免了与scala中的HashMap冲突。
使用类似HashMap => _并不是表示重命名,而是将HashMap隐藏。如:

scala    3行

import java.util.{HashMap => _,_}
import scala.collection.mutable._

这样隐藏了对java中HashMap的引入,只剩下scala中的HashMap.

更多文章请关注微信公众号:bigdataer

6.scala中的包的更多相关文章

  1. Scala学习(七)---包和引入

    包和引入 摘要: 在本篇中,你将会了解到Scala中的包和引入语句是如何工作的.相比Java不论是包还是引入都更加符合常规,也更灵活一些.本篇的要点包括: 1. 包也可以像内部类那样嵌套 2. 包路径 ...

  2. Scala学习七——包和引入

    一.本章要点 包也可也可以像内部类那样嵌套 包路径不是绝对路径 包声明链x.y.z并不自动将中间包x和x.y变成可见 位于文件顶部不带花括号的包声明在整个文件范围内有效 包对象可以持有函数和变量 引入 ...

  3. Scala 中的函数式编程基础(三)

    主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 <Functional Programming Principles in Scala>. ...

  4. Scala中的Map

    映射 映射是对偶的集合. 声明映射 映射是对偶的集合. a.声明映射 b.映射中的键值对称作对偶,用( , )表示 c.当映射中不存在key时,取值会报错,解决方案是使用 contains方法,或者g ...

  5. Scala中的Implicit详解

    Scala中的implicit关键字对于我们初学者像是一个谜一样的存在,一边惊讶于代码的简洁, 一边像在迷宫里打转一样地去找隐式的代码,因此我们团队结合目前的开发工作,将implicit作为一个专题进 ...

  6. Scala进阶之路-Scala中的泛型介绍

    Scala进阶之路-Scala中的泛型介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 通俗的讲,比如需要定义一个函数,函数的参数可以接受任意类型.我们不可能一一列举所有的参数类 ...

  7. 第84讲:Scala中List和ListBuffer设计实现思考

    今天来学习了scala中的list和ListBuffer scala list 内部很多操作是listbuffer做的,因为改变元素,listbuffer非常高效,tl是var类型的  ,但是他属于s ...

  8. scala中Map和Set

    scala中Set包含可变set和不可变Set,set的子类HashSet,各有一个扩展了可变和不可变的set特质.  可变set import scala.collection.mutable.Se ...

  9. Scala中集合类型与java中集合类型转换

    对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...

随机推荐

  1. Quick UDP Internet Connections 让互联网更快的协议,QUIC在腾讯的实践及性能优化

    https://mp.weixin.qq.com/s/44ysXnVBUq_nJByMyX9n5A 让互联网更快:通往QUIC之路 原创: 史天 翻译 云技术实践 8月15日 QUIC(Quick U ...

  2. 购物车-删除单行商品-HTMLTableElement.deleteRow()

    wta 问题发源的代码: /*删除单行商品*/ function deleteRow(rowId){ var Index=document.getElementById(rowId).rowIndex ...

  3. git学习------>git-rev-parse命令初识

    一.准备工作 第一步:在d盘git test目录下,新建工作区根目录demo,进入该目录后,执行git init创建版本库. DH207891+OuyangPeng@DH207891 MINGW32 ...

  4. 使用tensorflow 构建rnn网络

    使用tensorflow实现了简单的rnn网络用来学习加法运算. tensorflow 版本:1.1 import tensorflow as tf from tensorflow.contrib i ...

  5. Flask form(登录,注册)

    用户登录 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...

  6. sql 自定义函数返回中文,数字,英文

    --提取数字IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULLDROP FUNCTION DBO.GET_NUMBER2GOCREATE FUNCTION DBO. ...

  7. SQL Server 创建游标(cursor)

    游标的定义: 游标则是处理结果集的一种机制,它可以定位到结果集中的某一行,也可以移动游标定位到你所需要的行中进行操作数据.与 select 语句的不同是,select 语句面向的是结果集,游标面向的是 ...

  8. 47. Permutations II (全排列有重复的元素)

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  9. JavaWeb 如何在web.xml中配置多个servlet

    15:34:42 <servlet> <description></description> <display-name>ListMusicServle ...

  10. nodejs做中间层,向后端取数据

    var  http=require('http'): http.get('http://baidu/dksapi/weiboLive/GetSquareLive?pagecount=1&pag ...