`
fujinbing
  • 浏览: 237271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby 中的符号

    博客分类:
  • java
 
阅读更多
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常见面试题.pdf

    请说明在Ruby中符号的作用。 **符号**是一种不可变的标识符,用于标识特定的实体,如方法名、哈希键等。符号可以提高程序的性能和内存利用率。 **示例**: ```ruby sym = :hello puts sym # 输出 :hello ``` 以上...

    符号的优雅:深入探索Ruby中的Symbol

    ### 符号的优雅:深入探索 Ruby 中的 Symbol #### 引言 在 Ruby 这门优雅且功能强大的编程语言中,符号(Symbol)占据着举足轻重的地位。符号不仅是 Ruby 性能优化的关键组成部分,也是理解 Ruby 核心特性的窗口之...

    ruby中英文api

    同时,也可能涵盖了Ruby的高级特性,如元编程、符号、 Proc对象、块和闭包等。 "The Ruby Way.chm"则可能是《The Ruby Way》一书的电子版,这是一本深入介绍Ruby编程实践的书籍,它不仅讲解了Ruby的基本语法,还...

    Ruby元编程第二版中文

    符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`lambda`可以创建匿名函数,它们可以被赋值给变量,作为参数传递,或者用作方法的...

    ruby中文教程(源代码)

    - 数据类型:Ruby是动态类型语言,主要数据类型包括字符串(`String`)、整数(`Integer`)、浮点数(`Float`)、布尔值(`TrueClass`和`FalseClass`)、数组(`Array`)、哈希(`Hash`)、符号(`Symbol`)等。...

    Ruby语言中文教程.rar

    多态性在Ruby中通过消息传递实现,即对象调用方法,如果该方法不存在,会尝试在父类中查找。 Ruby中的控制结构包括条件语句(如`if`、`unless`)、循环(如`for`、`while`、`until`、`times`)和块(用`do..end`或`...

    基于Ruby符号执行的攻击流量提取.pdf

    本文提出了一种基于 Ruby 符号执行技术提取 Metasploit 攻击流量的方法。该方法利用符号代替攻击目标的反馈,使漏洞利用脚本在没有靶机的情况下运行,并通过符号执行的路径探索能力获取所有攻击目标对应的攻击流量。...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁明了,易于理解。包括变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(如字符串、数字、布尔值、数组、哈希)...

    基于Ruby符号执行的Metasploit攻击流量提取

    ### 基于Ruby符号执行的Metasploit攻击流量提取 #### 一、引言 随着互联网技术的飞速发展,网络安全成为了一个不容忽视的重要课题。网络攻击流量的研究与利用对于提升网络安全防护能力至关重要。一方面,通过对...

    Ruby on Rails中文指南

    7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...

    Ruby基础教程(中文第4版)

    在本书中,读者将深入理解Ruby的基础概念,逐步掌握其核心特性。 首先,Ruby的基础知识包括变量、常量和符号。Ruby支持四种类型的变量:局部变量、实例变量、类变量和全局变量,它们各自在不同范围内起作用。常量是...

    Ruby中文参考手册

    1. **Ruby基础**:Ruby语言的基础知识包括变量(局部变量、实例变量、类变量和全局变量)、常量、符号以及数据类型(如整型、浮点型、字符串、数组、哈希等)。 2. **控制结构**:Ruby中的流程控制有if/else、case...

    Ruby 基础语法 视频教程1

    通过`ruby-4-variables.mp4`和`ruby-5-variables-rules.mp4`,你可以深入理解变量的用法和规则,而`ruby-6-expression.mp4`将帮助你掌握如何在Ruby中构建和使用表达式。这些视频教程将为你提供一个坚实的Ruby编程...

    Ruby-Emojiemoji的Rubygem

    Ruby-Emoji,也被称为`emoji`,是一款在Ruby编程语言中的Gem(库),它使得开发者能够在他们的代码中方便地使用和处理表情符号(emoji)。这个Gem是Ruby开发中用于管理和操作Web资源,特别是与文本相关的应用程序,...

    Ruby Pocket Reference.pdf

    文档提到了一些关键内容的目录结构,例如运行 Ruby 解释器、使用 Unix/Linux 系统中的 Shebang 行、在 Windows 上关联文件类型、Ruby 的保留字、运算符、注释、数字、变量、符号、预定义变量、伪变量、全局常量、...

    Ruby 方法、类

    在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...

    ruby中文文档.chm

    3. **块、 Proc 和 Lambda**:理解Ruby中的块(blocks)、Proc对象和Lambda的区别及其用法。 4. **集合与数组**:包括数组、哈希(字典)的使用,以及各种内置集合类型如Set和Queue。 5. **文件与I/O**:学习如何...

    ruby中文文档.rar

    4. **方法定义**:Ruby允许灵活的方法定义,包括单引号、双引号字符串作为方法名,以及使用`-&gt;`箭头符号定义闭包。 5. **模块(Module)**:模块是命名空间的容器,可以用来组织类和方法,也可以实现类似Java的接口...

    Best of Ruby Quiz

    7. **异常处理**:Ruby中的`begin..rescue..else..ensure`结构用于异常处理,书中可能会有相关问题,教你如何优雅地处理错误。 8. **Gem生态系统**:Ruby的库管理工具Gem提供了丰富的第三方库,如Nokogiri(XML处理...

Global site tag (gtag.js) - Google Analytics