`
qzriso
  • 浏览: 242363 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Symbol对象

阅读更多

Symbol 对象用于表现 Ruby 解释器内的名字或一些字符串。它们自动地由 :name :”string” 字面值自动生成。在程序运行期间,对于给定名字的字符串将创建同一 Symbol 对象,而不管名字的含意和上下文环境。

 

也就是说,符号 Symbol 是一种很专一的对象,计算时(就算是包含展开式),只要其结果是同一个字符串的话,它总是返回同一对象。例如,如果 Fred 是一个在上下文环境中,及另一个方法中,另一个类中的常量,则 Symbol:Fred 将在这三个上下文环境中是同一个对象。

既然 Symbol 对象是用来表示符号类,你就可以将一些字符串与 Symbol 对象组成一种一对一的对应关系。

Ruby 脚本中符号有二种书写方法:

:symbol

‘symbol’.intern

先看看第一种书写方式。下面是一些用第一种书写方式的符号例子:

:class

:lvar

:method!

:andthisis?

:$gvar

:@ivar

:@@cvar

:+ 等等

它的语法如下:

: 标识符

: 变量名

: 操作符

可以用于得到符号 Symbol 。在使用字面值来表示符号时, ’:’ 后面只能是标识符、方法名(包括 ‘!’ ’?’ 等后缀)、变量名 ( 包括 ’$’ 等前缀 ) 或可重定义的操作符 ( 除此之外将引发语法错误,即操作符必须是那些可以作为方法进行再定义的操作符 )

 

此外在高版本中,你也可以使用第二种书写方式的符号:

p :’foo-bar’ #=> :”foo-bar”

p :”foo-bar” #=> :”foo-bar”

p %s{foo-bar} #=> :”foo-bar”

在这种表示法中,可以定义任意的符号 ( 但不能包含 ”<chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="”">0”</chmetcnv> )

:”…” 中,反斜线表示法 (“t,n,r,f” 等等 ) 和展开式 (“#{ 表达式 }” ) 都是有效的。

 

让我们再看看前面提到的 :Fred 的例子:

module One

class Fred

end

$f1 = :Fred

End

module Two

Fred = 1

$f2 = :Fred

end

def Fred()

end

$f3 = :Fred

# 由下面可以看出是同一个 Symbol 对象。

$f1.id #=> 2514190

$f2.id #=> 2514190

$f3.id #=> 2514190

下面文字来自于: http://anw.stikipad.com/ocean/show/Symbol

一開始接觸 ruby 時常會被 :symbol 這類寫法搞的很困惑, 在 ruby 中它們被稱為 “Symbol”

分享到:
评论

相关推荐

    Flex Symbol 点线面数据库存储及读取

    本主题主要探讨如何将这些Flex Symbol对象与数据库进行交互,以便于数据的存储和读取。 一、Flex Symbol的基本概念 Flex Symbol是ArcGIS Flex API中的核心组件,它定义了地图对象(点、线、面)的视觉表示。有三种...

    Javascript API for ArcGIS Server对象模型图.rar

    5. **Symbol对象**:Symbol用于定义图层中几何对象的外观,包括颜色、样式、填充等。有简单符号(SimpleSymbol)和复杂符号(ComplexSymbol)两种,如标记符号、线条符号和填充符号。 6. **Renderer对象**:...

    JavaScript内置对象导览图

    12. **Symbol对象(ES6新增)** Symbol是一种新的原始数据类型,用于创建唯一的标识符。`Symbol()`函数生成一个新的symbol,`Symbol.for()`用于全局注册并获取符号。 13. **Map与Set对象(ES6新增)** Map对象...

    ArcObjects GIS应用开发-基于C#

    6.2 Symbol对象 6.3 制作专题图 6.4 地图的标志 6.5 如何与地图进行互动 7. 地图的输出 7.1 地图的打印输出 7.2 地图的转换输出 8. 空间数据管理 8.1 Geodatabase的基础知识 8.2 Worksapc……

    GIS二次开发:第六讲 地图的显示.ppt

    在本讲中,我们将深入探讨如何通过编程方式来控制地图的显示,主要涵盖颜色对象、symbol对象以及颜色模型的转换。 首先,我们关注的是颜色对象的使用。颜色是地图可视化中至关重要的元素,它可以帮助用户快速识别和...

    ArcEngine符号.docx

    MarkerSymbol用于表示点对象的视觉表现,包括13个子类,如ArrowMarkerSymbol(箭头)、BarChartSymbol(条形图)、CharacterMarker3DSymbol(三维字体)、CharacterMarkerSymbol(字体)、PictureMarkerSymbol(图片...

    MapX教程

    4. 添加标注和标记:使用Label和Symbol对象在地图上添加文字标注和图标标记。 5. 编程交互:响应用户的地图操作,如点击、拖动等,实现自定义功能。 MapX教程通常会涵盖这些基础内容,并逐步深入到高级主题,如地图...

    mapobject中文学习指南2

    在使用 Add Event Method 时,需要注意 Geo Event 对象、Point 对象和 Symbol 对象之间的关系。 Add Geo Data Set Method ----------------------- Add Geo Data Set Method 是 Data Connection 对象的一个方法,...

    ES6 Symbol在对象中的作用实例分析

    ES6 Symbol 是JavaScript语言新增的一种原始数据类型,它表示独一无二的值,确保了在对象属性名中的唯一性,从而避免了属性名冲突的问题。在对象中使用Symbol的主要优点包括: 1. **声明Symbol**: 创建一个Symbol...

    Javascript ES6中数据类型Symbol的使用详解

    Symbol 对象是一个 symbol primitive data type 的隐式对象包装器。 它是JavaScript语言的第七种数据类型,前6种分别是:Undefined、Null、Boolean、String、Number、Object。 语法 Symbol([description]) ...

    ArcGIS Engine基础开发教程(C#)

    - **MarkerSymbol对象**:讨论MarkerSymbol类的特性和使用方法。 - **LineSymbol对象**:介绍LineSymbol类的功能。 - **FillSymbol对象**:解释FillSymbol类的用途。 - **TextSymbol对象**:探讨TextSymbol类的...

    Arcgis Javascript API 动态标绘。

    在ArcGIS JavaScript API中,我们可以使用Polyline对象来创建折线,并通过Symbol对象定制箭头的样式,包括箭头的大小、颜色和方向。通过调整折线的顶点位置和顺序,即可动态改变箭头的形态和指向。 四、军事标绘...

Global site tag (gtag.js) - Google Analytics