`

Ruby学习:Symbol

阅读更多
如果刚刚学Ruby,看到attr_writer :foo 这样的东西是不是和我一样一头雾水,attr_writer是个方法不错,可:foo是个身马玩意儿...
:foo其实生成了一个Symbol对象的实例,你可以把Symbol对象看成是很cool的String,它没有String对象里面那些乱七八糟的方法,但是你可以把它当成String来用,因为他是immutable的,所以一旦你定义了:foo,在你的程序可以把它当成String来用十万次,十亿次。。。可是实例只有这一个,这样做的好处就是比用literal string节省内存。下面看一个attr_writer的模仿实现:

<!----> 1 def customized_setter(prop)
 2     eval <<-END
 3     def #{prop}=(arg)
 4         @#{prop} = arg
 5     end
 6     END
 7 end
 8 
 9 class Test
10     customized_setter :sym    
11 
12     def showSym
13         puts @sym
14     end
15 
16 end
17 
18 = Test.new
19 t.sym = "FOO"
20 t.showSym

当然,你也可以用immutable的特性来定义常量。

分享到:
评论

相关推荐

    Python & Ruby 学习

    而文件名“New Microsoft Office Word Document.docx”则提示我们其中可能包含一篇关于Python和Ruby学习的文档,详细讲解了相关概念、技巧或实践案例。遗憾的是,由于没有实际的文件内容,无法进一步展开讨论。如果...

    Ruby学习资料chm

    6. Symbol:Ruby中的Symbol是不可变的对象,用于表示常量,减少内存开销,提高性能。 7. Mixins:Ruby的模块(Module)系统允许代码复用,模块可以被多个类包含,实现类似多重继承的功能。 8. 自动类型推断:Ruby...

    Ruby-:Ruby的基础

    2. **数据类型**:Ruby支持基本的数据类型,如整型(Integer)、浮点型(Float)、字符串(String)、布尔型(TrueClass/FalseClass)以及符号(Symbol)。此外,还有数组(Array)、哈希(Hash)等复合类型。 3. *...

    比较详细的ruby symbol 学习资料

    解释的不错,应该明确了不少 ruby symbol详解 起因 最近在学习ruby on rails,的确是一个优秀的数据库开发框架。但在过程中,发现在视图文件夹中的rhtml文件里有大量的类似于以下的语句: &lt;td&gt;&lt;&#37;= link_...

    rubystudy:一个研究Ruby基本知识的项目

    这个"rubystudy"项目显然是为了帮助学习者深入理解Ruby语言的基本概念和特性。让我们通过这个项目来探索Ruby的一些核心知识点。 1. **面向对象编程**: Ruby是基于面向对象编程(OOP)的,所有数据在Ruby中都是对象...

    Ruby资源ruby-v3.1.1.zip

    2. **Symbol to_proc的优化**:Ruby 3.1对`Symbol#to_proc`进行了优化,提高了使用方法引用作为块时的性能。这在处理集合时特别有用,如`array.map(&:method)`。 3. **Ruby编译器改进**:内部编译器的优化使得代码...

    学习 Ruby 的笔记以及 Demo.zip

    7. Symbol(符号):Ruby中的Symbol是不可变的对象,常用于表示唯一的标识符,如哈希键。它们在内存中只存在一次,提高了效率。 8. Mixins(混入):Ruby的模块可以被类“混入”,实现多重继承的效果,让代码组织...

    ruby基础学习资料

    这个“ruby基础学习资料”压缩包很显然是为那些想要入门或者深入理解Ruby的人准备的。让我们详细探讨一下Ruby的基础知识。 1. **变量与数据类型**: Ruby支持五种基本的数据类型:符号(Symbol)、字符串(String...

    ruby中文手册 chm

    通过这个中文手册,开发者不仅可以学习到Ruby的基本语法,还可以了解到更高级的主题,如元编程、闭包、 Blocks、Proc对象和Symbol,以及如何利用Ruby的灵活性来创建高效、简洁的代码。同时,了解RGSS可以让开发者...

    eloquent ruby

    ### Eloquent Ruby:...这本书以其独特的魅力吸引了众多读者,成为Ruby学习者不可或缺的一部分。通过阅读本书,你可以更加深刻地理解Ruby语言的设计理念,掌握其实现复杂功能的方法,并最终成为一名真正的Ruby专家。

    二十分钟Ruby入门教程

    Ruby有几种基本的数据类型,包括整数(如`5`)、浮点数(如`3.14`)、字符串(用引号括起来,如`"Hello"`,支持单引号和双引号两种)、布尔值(`true`或`false`)以及符号(以冒号开头,如`:symbol`)。另外,数组和...

    learning-ruby.

    1. **变量和数据类型**:Ruby支持多种数据类型,包括整型(Integer)、浮点型(Float)、字符串(String)、布尔型(Boolean)以及符号(Symbol)。此外,Ruby还有数组(Array)和哈希(Hash)等复合数据类型。 2. ...

    Ruby元编程第二版中文

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

    ruby官方chm文档

    本套官方文档包含了关于Ruby核心库、标准库、语言特性和整体框架的详细信息,是学习和深入理解Ruby不可或缺的参考资料。 《ruby23-stdlib.chm》文档主要涵盖了Ruby的标准库(Standard Library)。Ruby标准库提供了...

    Ruby语言教程&案例&相关项目资源.docx

    - **符号**:Ruby中的符号(Symbol)是一种轻量级的标识符,通常用于表示名称或键值,比字符串更高效。 - **字符串处理**:提供丰富的字符串处理功能,如字符串插值、多行字符串、正则表达式等。 - **异常处理**:...

    learning-ruby:Ruby Orientado a Objetos

    10. **符号(Symbol)**:在Ruby中,符号是不可变的字符串引用,用`:symbol`表示。它们在内存中只存储一份,适合用作哈希键或标识符,提高性能。 通过深入学习以上这些概念,你将能够掌握Ruby面向对象编程的基本...

    ruby-2.0.0-p0.tar

    7. **Symbol垃圾收集**:在Ruby 2.0之前,所有创建的Symbol都会永久存在内存中,但在2.0中,未使用的Symbol会被垃圾收集器回收,节省了内存。 8. **YARV虚拟机优化**:Ruby 2.0继续使用YARV(Yet Another Ruby VM)...

    Ruby 语法. Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

    - **符号(Symbol)**:Ruby 中的 Symbol 类型是一种不可变的字符串,通常用于标识符。 - **元编程**:Ruby 提供了一系列方法来实现元编程,例如 `eval`、`send`、`method_missing` 等。 - **多线程**:虽然 Ruby 本身...

Global site tag (gtag.js) - Google Analytics