1. "<<"
1) 创建一个绑定到特定对象的class
a="my string"
class <<a
def to_s
"this is #{self}" #将原来的array中的to_s方法进行修改
end
end
puts a.to_s # this is my string
2."@"
instance variable is simply a name preceded by an “at” sign (@)
3. "@@"
Class Variables
4. “$”
全局变量
5.
初学Ruby的时候,往往对字符串(String类)与符号(Symbol)这两种变量类型分不清楚,其实,我们大可不必纠缠这两种变量类型的内部实现,只需记住它们的特点和区别就可以了:
字符串和符号,都是Ruby中表示文本的方式
不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过to_sym和to_s)
1.
>> "book".to_sym
2.
=> :book
3.
>> :track.to_s
4.
=> "track"
2. 相同的符号是一个对象,相同的字符并不一定是一个对象
这就是符号和字符串最大的差别,符号是不可变的,不能对一个符号进行修改。所以说,两个看起来相同的符号一定是一个对象,但是说两个看起来一样的字符串是一个对象,就不对了。
这里,我们用 equal? 方法检验这一点,当两个对象相同时,equal? 返回true,反之是false:
1.
>> :book.equal?(:book)
2.
=> true
3.
>> "book".equal?("book")
4.
=> false
处理符号相比字符串,占用更少的资源
这也就是为什么有些时候我们要使用符号的原因,由于字符串变量必须具有各种修改其内容的功能,所以字符串的维护和处理的开销就很大,但是有些时候,我们并不需要修改和处理创建的文本信息,这个时候用符号再好不过了。
比较典型的用法,就是在Rails中,用符号来指代散列中的参数名称:
1.
<% for article in @articles -%>
2.
<%= link_to article.title,
3.
:controller => "article",
4.
:action => "show",
5.
:id => article.id %>
6.
<% end -%>
反之,如果我们把 :controller 写成"controller",把 :action 写成"action",吧 :id 写成"id",每一个循环都要创建3个新的字符对象,但是我们又不需要对这些字符串进行修改操作,白白添加了很多处理器开销,而且写成符号的形式更加简练,可以更容易分别出参数和值,何乐而不为呢。
分享到:
相关推荐
请说明在Ruby中符号的作用。 **符号**是一种不可变的标识符,用于标识特定的实体,如方法名、哈希键等。符号可以提高程序的性能和内存利用率。 **示例**: ```ruby sym = :hello puts sym # 输出 :hello ``` 以上...
### 符号的优雅:深入探索 Ruby 中的 Symbol #### 引言 在 Ruby 这门优雅且功能强大的编程语言中,符号(Symbol)占据着举足轻重的地位。符号不仅是 Ruby 性能优化的关键组成部分,也是理解 Ruby 核心特性的窗口之...
同时,也可能涵盖了Ruby的高级特性,如元编程、符号、 Proc对象、块和闭包等。 "The Ruby Way.chm"则可能是《The Ruby Way》一书的电子版,这是一本深入介绍Ruby编程实践的书籍,它不仅讲解了Ruby的基本语法,还...
符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`lambda`可以创建匿名函数,它们可以被赋值给变量,作为参数传递,或者用作方法的...
- 数据类型:Ruby是动态类型语言,主要数据类型包括字符串(`String`)、整数(`Integer`)、浮点数(`Float`)、布尔值(`TrueClass`和`FalseClass`)、数组(`Array`)、哈希(`Hash`)、符号(`Symbol`)等。...
多态性在Ruby中通过消息传递实现,即对象调用方法,如果该方法不存在,会尝试在父类中查找。 Ruby中的控制结构包括条件语句(如`if`、`unless`)、循环(如`for`、`while`、`until`、`times`)和块(用`do..end`或`...
本文提出了一种基于 Ruby 符号执行技术提取 Metasploit 攻击流量的方法。该方法利用符号代替攻击目标的反馈,使漏洞利用脚本在没有靶机的情况下运行,并通过符号执行的路径探索能力获取所有攻击目标对应的攻击流量。...
在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁明了,易于理解。包括变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(如字符串、数字、布尔值、数组、哈希)...
### 基于Ruby符号执行的Metasploit攻击流量提取 #### 一、引言 随着互联网技术的飞速发展,网络安全成为了一个不容忽视的重要课题。网络攻击流量的研究与利用对于提升网络安全防护能力至关重要。一方面,通过对...
7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...
在本书中,读者将深入理解Ruby的基础概念,逐步掌握其核心特性。 首先,Ruby的基础知识包括变量、常量和符号。Ruby支持四种类型的变量:局部变量、实例变量、类变量和全局变量,它们各自在不同范围内起作用。常量是...
1. **Ruby基础**:Ruby语言的基础知识包括变量(局部变量、实例变量、类变量和全局变量)、常量、符号以及数据类型(如整型、浮点型、字符串、数组、哈希等)。 2. **控制结构**:Ruby中的流程控制有if/else、case...
通过`ruby-4-variables.mp4`和`ruby-5-variables-rules.mp4`,你可以深入理解变量的用法和规则,而`ruby-6-expression.mp4`将帮助你掌握如何在Ruby中构建和使用表达式。这些视频教程将为你提供一个坚实的Ruby编程...
Ruby-Emoji,也被称为`emoji`,是一款在Ruby编程语言中的Gem(库),它使得开发者能够在他们的代码中方便地使用和处理表情符号(emoji)。这个Gem是Ruby开发中用于管理和操作Web资源,特别是与文本相关的应用程序,...
文档提到了一些关键内容的目录结构,例如运行 Ruby 解释器、使用 Unix/Linux 系统中的 Shebang 行、在 Windows 上关联文件类型、Ruby 的保留字、运算符、注释、数字、变量、符号、预定义变量、伪变量、全局常量、...
在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...
3. **块、 Proc 和 Lambda**:理解Ruby中的块(blocks)、Proc对象和Lambda的区别及其用法。 4. **集合与数组**:包括数组、哈希(字典)的使用,以及各种内置集合类型如Set和Queue。 5. **文件与I/O**:学习如何...
4. **方法定义**:Ruby允许灵活的方法定义,包括单引号、双引号字符串作为方法名,以及使用`->`箭头符号定义闭包。 5. **模块(Module)**:模块是命名空间的容器,可以用来组织类和方法,也可以实现类似Java的接口...
7. **异常处理**:Ruby中的`begin..rescue..else..ensure`结构用于异常处理,书中可能会有相关问题,教你如何优雅地处理错误。 8. **Gem生态系统**:Ruby的库管理工具Gem提供了丰富的第三方库,如Nokogiri(XML处理...