Scala学习(十)——作用域和import

Scala学习(十)——作用域和import

本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:Scala学习(十)——作用域和import
简介

作用域,是几乎所有高级语言都具有的功能。import关键字(或者类似的关键字),是几乎所有面向对象语言必备的功能。毫无疑问,在Java虚拟机上运行的Scala,也具有这两个功能。然而,Scala的import功能并非完全照搬Java的import,其用法和区别将在本节详解。

import语句

Java的import语句放在java文件的起始位置,用于导入类、常量。Scala也有这一功能(Java中的*_替代了):

有些在Java中要写多行的语句这里只需写成一行。也就是用大括号包含,再用逗号分隔:

import语句还可以导入静态方法:

import语句还可以放在程序的任意位置,使得它仅在当前作用域里有效:

而且,import语句还可以导入非静态方法:

作用域

Scala的作用域并不特别,完全可以参考类似的C语言或者Java的作用域要求。
简而言之就是:对于同名变量来说,大括号内部定义的变量会覆盖大括号外部的变量,局部变量覆盖成员变量,大括号内部import的类、变量、方法覆盖外部的。只有一种情况比较特殊,就是自身成员不会被import导入的成员覆盖。
不过实际使用中并不会经常出现变量重名的情况,所以作用域的意义更多在于访问限制。这一条一般来说一句话就可以概括:作用域限定于定义或导入该变量或类的大括号及内层大括号嵌套中。

总结

虽然Scala提供了这么多使用import的方式,但是使用的时候还是需要小心。一个import语句可能会影响相当大范围的代码,如果难以找到某句代码对应的import语句,会影响整体代码的可读性,尤其是导入了非静态方法时,很容易和成员混淆。所以,具体要怎么用,还是看个人的修行了(我自己还是老老实实地像Java那样用吧)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据