• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > 深入理解Scala 标识符,命名和域,深入理解scala

深入理解Scala 标识符,命名和域,深入理解scala

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含scala 运算符,scala 操作符,scala 三目运算符,scala语言教程,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?

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

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

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

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

{ valx = “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的成员的类型。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入理解Scala 标识符,命名和域,深入理解scala

相关文章

  • 使用export/import导出和导入docker容器,exportdocker
  • 系统监控软件Ganglia的安装,监控软件ganglia
  • HBase shell 启动出错 org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = Con,
  • Hadoop源代码分析(三七),hadoop源代码
  • Hadoop之——正常启动而无法正常关闭,hadoop无法正常关闭
  • openstack-计算节点安装(Node),openstack-node
  • Nodejs课堂笔记-第六课 在DynamoDB中如何创建表,nodejsdynamodb
  • The method getContextPath() from the type HttpServletRequest refers to the miss,getcontextpath
  • MapReduce处理二次排序(分区-排序-分组),mapreduce二次
  • Hadoop之——伪分布安装,hadoop伪分布

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Spark的Master和Worker集群启动的源码分析,sparkworker
    • 云计算容器服务该何去何从,容器该何去何从
    • 上海第五次Spark meetup会议资料分享,sparkmeetup
    • 用Hello World校验Docker的安装,hellodocker
    • 用Bash Script编写Hadoop MapReduce Streaming,hadoopmapreduce
    • 超人学院Hadoop大数据资源分享,超人学院hadoop分享
    • Hadoop源代码分析(三七),hadoop源代码
    • Hadoop,HBase集群环境搭建的问题集锦(一),hadoophbase
    • flume 组件概述与列表
    • Flume 开发者指南V1.5.2,flume开发者v1.5.2

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有