Scala 包的引入和细节|学习笔记

简介: 快速学习 Scala 包的引入和细节。

开发者学堂课程【Scala 核心编程-基础Scala 包的引入和细节】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8962


Scala 包的引入和细节

 

内容介绍:

一、Scala 引入包基本介绍

二、Scala 引入包的细节和注意事项

 

一、Scala 引入包基本介绍

1、区别

Scala 的引入包使用到了 import, 基本的原理、机制和 Java 相同,但 Scala 中的 import 功能更加强大、更灵活。

2、关联

由于 Scala 语言源自于 Java,所以 java.lang 包中的类会自动引入到当前环境中,而 Scala 中的 scala 包和 Predef包的类也会自动引入到当前环境中,即起其下面的类可以直接使用。

 

二、Scala 引入包的细节和注意事项

1、import 语句在 Scala 中的位置

在 Scala 中,import 语句可以出现在任何地方,并不仅限于文件顶部,import 语句的作用一直延伸到包含该语句的块末尾。

(1)、语法的优点

部分未使用代码的情况下进行常规操作并不划算。故而在需要时在引入包,缩小 import 包的作用范围,有利于提高效率。

(2)、例子

class User {

import scala.beans.BeanProperty //在此处引入,import 的作用域仅为大括号以内。

@BeanProperty var name : String = “”

}

class Dog {

@BeanProperty var name : String = “” //在此处,即超出大括号的区域进行 import 的使用将会被系统报错。

}

(3)、实际运用

//当前具有两个类

//进行如上代码的编入可得到下图结果

image.png

此时,由于 import 的作用域位于 Class User 中,故而无法对 Class Dog 起到相应的效果。

(4)、解决方案

方法1

Class Dog 处再次进行 import的 引用

方法2

import 引入到最前方,即扩大其作用域范围。

2、导入全部类

(1)、理论

Java 中若欲导入包中所有的类,通过通配符*进行实现,Scala 中采用下划线_进行实现

(2)、演示

import scala.beans._   //_代表将此包下的所有内容都进行了引入,等价于*

3、导入部分类

(1)、理论

若欲得到的内容并非某包的全部,而是其中的几个类,可以采用选取器(大括号)

(2)、演示

def test(): Unit = {

//可使用选择器选择引入包的内容(java 中不存在此功能)

//只引入 import scala.collection.mutable 包下的 HashMap、HashSet

import scala.collection.mutable.{HashMap, HashSet}

var map = new HashMap()

var set = new HashSet()

}

4、重命名

(1)、理论

如果引入的多个包中含有相同的类,那么可以将不需要的类进行重命名以便于区分

(2)、演示

//创建一个 HashMap 将会出现以下情况

image.png

//其中存在三类HashMap,第一种为scala本身的可变 HashMap。第二种为scala.collection.immuta包下的HashMap,第三种为 java 下的 HashMap。

//由于出现了名字重复的状况,现今需要使用到 scala 提供的重命名功能。

//将 java.util.HashMap 暂时性重命名为 JavaHashMap(自身任意指定)

import java.util.-HashMap=>JavaHashMap, List}

import scala.collection.mutable._

var map = new HashMap()//此时 HashMap 指向的是 Scala 中的 HashMap

var map1 = new JavaHashMap(); //此时使用的 java 中 HashMap 的别名

5、隐藏

(1)、理论

如果某个冲突的类根本就不会用到,可直接将其隐藏。

(2)、演示

import java .util HashMap=>_,_}   //含义为引入 java.util 包的所有类,但忽略 HashMap 的别名

//第一个_代表将 HashMap 进行隐藏,第二个_代表引入其余内容

var map = new HashMap()

//此时的 HashMap 指向的是 scala 中的 HashMap,而且 idea工 具的提示也不会提示 java util 的 HashMaple

相关文章
|
分布式计算 Java 大数据
|
Java Scala 开发者
Scala 下界介绍和应用实例 | 学习笔记
快速学习 Scala 下界介绍和应用实例
Scala 下界介绍和应用实例 | 学习笔记
|
Scala 开发者
Scala 上界介绍和应用实例2 | 学习笔记
快速学习Scala上界介绍和应用实例2
Scala 上界介绍和应用实例2 | 学习笔记
|
Java Scala 开发者
Scala 泛型介绍和应用实例2 | 学习笔记
快速学习 Scala 泛型介绍和应用实例2
Scala 泛型介绍和应用实例2 | 学习笔记
|
Java Scala 开发者
Windows 搭建S cala 开发环境|学习笔记
快速学习 Windows 搭建 Scala 开发环境。
216 0
Windows 搭建S cala 开发环境|学习笔记
|
小程序 Java 编译器
Scala 快速入门|学习笔记
快速学习 Scala 快速入门。
128 0
Scala 快速入门|学习笔记
|
Scala 开发者 索引
关联 Scala 源码|学习笔记
快速学习关联 Scala 源码。
210 0
|
Java 大数据 Scala
scala 对象创建的流程分析|学习笔记
快速学习 scala 对象创建的流程分析。
112 0
|
大数据 Java 编译器
Scala 字符类型|学习笔记
快速学习 Scala 字符类型。
184 0
|
大数据 Scala 开发者
Scala 整型|学习笔记
快速学习 Scala 整型。
131 0