千家信息网

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

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,本篇内容主要讲解"Scala标识符,命名和域怎么理解 ",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Scala标识符,命名和域怎么理解 "吧!在Scala
千家信息网最后更新 2025年01月25日Scala标识符,命名和域怎么理解

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

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

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

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

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

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

val x = 1;

{ import p.x;

x}

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

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

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

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

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

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

package P {

object X { val x = 1; val y = 2 }

}

package Q {

object X { val x = true; val y = "" }

}

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

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

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

object A {

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

object B {

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

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

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

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

object C {

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

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

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

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

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

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

{ val x = "abc" //‟x‟由局部定义绑定

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

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

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

}}}}}}

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

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

类型 标识 标识符 优先级 实体 通配符 子句 局部 术语 空间 成员 不同 中用 内容 方法 错误 e.x 学习 实用 更深 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 隐私计算与网络安全 南京个人软件开发销售 陕西北斗时钟监控网关服务器 互联网公司科技创新榜单 河南通信软件开发过程有哪些 ibm 2u服务器 学校数据库怎么导出英文参考文献 安信网络安全科技馆 SQL数据库怎样找到以前 数据库类型的笔记app 川大网络安全少年班好就业吗 我的世界服务器ip大全 宝山区项目软件开发收费套餐 网络安全维护毕业设计 火鸟数据库下载 郑州web前端软件开发价钱 深圳市卜鸣网络技术有限公司 叶利钦视频软件开发 网络安全教育活动教案 京东抢购秒杀软件开发思路 中国电信服务器测试工程师 服务器可以下载什么应用 黑龙江pdu服务器电源销售价格 基岩版怎么进入我的世界服务器 软件开发全流程涉及哪些文档 运动监视 视频软件开发 关于网络安全的作文六年级 手提电脑dns服务器坏了 数据库某一个表按时间排序 数据库连接池 开源
0