Scala---Import子句详解

语法:
Import ::= „import‟ ImportExpr {„,‟ ImportExpr}
ImportExpr ::= StableId „.‟ (id | „_‟ | ImportSelectors)
ImportSelectors ::= „{‟ { ImportSelector „,‟} (ImportSelector | „_‟) „}‟
ImportSelector ::= id [„=>‟ id | „=>‟ „_‟]
import子句形式为import p.I,p是一个稳定标识符(§3.1),I是一个import表达式。import表达式确定了p的成员中一些名称的集合,使这些名称不加限定即可用。最普通的import表达式的形式是一个import选择器的列表。
{x1=>y1,…,xn=>yn,_}
其中n>=0,最后的通配符„_‟可以没有。它使每个成员p.xi在未限定的名称yi下可用。例如每个import 选择器 xi=>yi将p.xi重命名为yi。如果存在最终的通配符,p的除x1,…,xn之外的成员z也将在其自身未限定的名称下可用。
import 选择器对类型和术语成员起同样作用。例如,import子句import p.{x=>y}将术语p.x重命名为术语y,并且将类型名p.x重命名为类型名y。这两个名称中至少有一个引用p的一个成员。
如果import 选择器的目标是通配符,import 选择器就会隐藏对源成员的访问。例如,import 选择器 x=>_将x“重命名”为通配符号(作为用户程序中的名称不可访问),因此也有效阻止了对x的非限制性的访问。这在同一个import 选择器列表最后有一个通配符的情况下是有用的,此时将引入所有前面import 选择器没有提及的成员。
由import子句所引入的绑定的域开始于import子句之后并扩展至封闭块,模板,包子句,或编译单元的末尾,具体决定于哪个先出现。
存在一些简化形式。import 选择器可以只是一个名字x。这种情况下,x以没有重命名的方式被引入,因此该import 选择器等价于x=>x。更进一步,也可以用一个标识符或通配符来替换整个的import 选择器列表。import子句import p.x等价于import p.{x},例如不用限定p的成员x即可用。import子句p._等价于import p.{_},例如不用限定p的所有成员x即可用(该处是java中import p.*的同义语)。
一个import子句中的多个import表达式import p1.I1,…,pn.In被解释为一个import子句的序列import p1.I1;…;import pn.In。
示例4.7.1考虑以下对象定义:
object M{
def z = 0, one = 1
def add(x: Int, y: Int):Int = x + y
}
因此代码块
{import M.{one, z => zero, _}; add(zero, one)}
就等价于代码块
{M.add(M.z, M.one)}

更多精彩内容请关注:http://bbs.superwu.cn

关注超人学院微信二维码:163519_stlL_2273204.jpg

转载于:https://my.oschina.net/crxy/blog/414997

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值