Scala标识符,命名和域怎么理解

本篇内容主要讲解“Scala标识符,命名和域怎么理解 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala标识符,命名和域怎么理解 ”吧!

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;成都网站设计、成都网站建设收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了十载的创新互联网站建设公司。

在Scala中,命名用来表示类型,值,方法以及类,这些统称为实体。命名在局部定义与声明,继承,import子句,package子句中存在,这些可以统称为绑定。

绑定有优先级,定义(局部或继承)有最高的优先级,然后是显式import,然后是通配符import,然后是包成员,是最低的优先级。

有两种不同的命名空间,一个是类型,一个是术语。同样的命名可以表示类型或术语,这要看命名应用所在的上下文。

绑定有一个域,在此域中用单一命名定义的实体可以用一个简单名称来访问。域可以嵌套。内部域中的绑定将会遮盖同一域中低优先级的绑定,或者外部域中低优先级或同优先级的绑定。

注意遮盖只是偏序关系。在下面情况中:

valx = 1;

{ importp.x;

x}

x的绑定并没有互相遮盖。因此第三行中对x的引用的含义将是不明确的。

对一个未限定的(类型或术语)标识符x的引用在以下条件下可以被单一绑定:

      l 在同一命名空间中用命名x定义一个实体作为标识符

      l 在此命名空间中遮盖所有的其他定义命名x的实体绑定

如果没有这样的绑定将会导致错误。如果x由一个import子句绑定,那么简单命名x将等价于由import子句映射所限定的命名。如果x由一个定义或声明绑定,那么x将指代由该绑定引入的实体。在此情况下,x的类型即是引用的实体的类型。

示例2.0.2 以下是包P和Q中两个名为X的对象的定义:

packageP {

objectX { valx = 1; valy = 2 }

}

packageQ {

objectX { valx = true; valy = “” }

}

以下程序示意了它们间不同的绑定及优先级。

packageP { //‟X‟由package子句绑定

importConsole._ //‟println‟由通配符import绑定

objectA {

println(“L4: “+X) //这里的‟X‟指‟P.X‟

objectB {

importQ._{ //‟X‟由通配符import绑定

println(“L7: “+X) //这里的‟X‟指‟Q.X‟

importX._ //‟x‟和‟y‟由通配符import绑定

println(“L8: “+x) //这里的‟x‟指‟Q.X.x‟

objectC {

valx = 3 //‟x‟由局部定义绑定

println(“L12: “+x) //这里的‟x‟指常数‟3‟

{ importQ.X._ //‟x‟和‟y‟由通配符import绑定

// println(“L14: “+x) //这里到‟x‟的引用指代不明确

importX.y //‟y‟由显式import绑定

println(“L16: “+y) //这里的‟y‟指‟Q.X.y‟

{ valx = “abc” //‟x‟由局部定义绑定

importP.X._ //‟x‟和‟y‟由通配符import绑定

// println(“L19: “+y) //这里到‟y‟的引用指代不明确

println(“L20: “+x) //这里的‟x‟指字符串”abc”

}}}}}}

一个到限定的(类型或术语)标识符e.x的引用指在同一个命名空间中e的类型T的一个名为x的成员作为标识符。如果T不是值类型将会导致错误。e.x的类型就是引用的实体T的成员的类型。

到此,相信大家对“Scala标识符,命名和域怎么理解 ”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


新闻标题:Scala标识符,命名和域怎么理解
分享网址:http://hbruida.cn/article/ppihdp.html