如果刚刚学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 t = Test.new
19 t.sym = "FOO"
20 t.showSym
当然,你也可以用immutable的特性来定义常量。
分享到:
相关推荐
而文件名“New Microsoft Office Word Document.docx”则提示我们其中可能包含一篇关于Python和Ruby学习的文档,详细讲解了相关概念、技巧或实践案例。遗憾的是,由于没有实际的文件内容,无法进一步展开讨论。如果...
6. Symbol:Ruby中的Symbol是不可变的对象,用于表示常量,减少内存开销,提高性能。 7. Mixins:Ruby的模块(Module)系统允许代码复用,模块可以被多个类包含,实现类似多重继承的功能。 8. 自动类型推断:Ruby...
2. **数据类型**:Ruby支持基本的数据类型,如整型(Integer)、浮点型(Float)、字符串(String)、布尔型(TrueClass/FalseClass)以及符号(Symbol)。此外,还有数组(Array)、哈希(Hash)等复合类型。 3. *...
解释的不错,应该明确了不少 ruby symbol详解 起因 最近在学习ruby on rails,的确是一个优秀的数据库开发框架。但在过程中,发现在视图文件夹中的rhtml文件里有大量的类似于以下的语句: <td><%= link_...
这个"rubystudy"项目显然是为了帮助学习者深入理解Ruby语言的基本概念和特性。让我们通过这个项目来探索Ruby的一些核心知识点。 1. **面向对象编程**: Ruby是基于面向对象编程(OOP)的,所有数据在Ruby中都是对象...
2. **Symbol to_proc的优化**:Ruby 3.1对`Symbol#to_proc`进行了优化,提高了使用方法引用作为块时的性能。这在处理集合时特别有用,如`array.map(&:method)`。 3. **Ruby编译器改进**:内部编译器的优化使得代码...
7. Symbol(符号):Ruby中的Symbol是不可变的对象,常用于表示唯一的标识符,如哈希键。它们在内存中只存在一次,提高了效率。 8. Mixins(混入):Ruby的模块可以被类“混入”,实现多重继承的效果,让代码组织...
这个“ruby基础学习资料”压缩包很显然是为那些想要入门或者深入理解Ruby的人准备的。让我们详细探讨一下Ruby的基础知识。 1. **变量与数据类型**: Ruby支持五种基本的数据类型:符号(Symbol)、字符串(String...
通过这个中文手册,开发者不仅可以学习到Ruby的基本语法,还可以了解到更高级的主题,如元编程、闭包、 Blocks、Proc对象和Symbol,以及如何利用Ruby的灵活性来创建高效、简洁的代码。同时,了解RGSS可以让开发者...
### Eloquent Ruby:...这本书以其独特的魅力吸引了众多读者,成为Ruby学习者不可或缺的一部分。通过阅读本书,你可以更加深刻地理解Ruby语言的设计理念,掌握其实现复杂功能的方法,并最终成为一名真正的Ruby专家。
Ruby有几种基本的数据类型,包括整数(如`5`)、浮点数(如`3.14`)、字符串(用引号括起来,如`"Hello"`,支持单引号和双引号两种)、布尔值(`true`或`false`)以及符号(以冒号开头,如`:symbol`)。另外,数组和...
1. **变量和数据类型**:Ruby支持多种数据类型,包括整型(Integer)、浮点型(Float)、字符串(String)、布尔型(Boolean)以及符号(Symbol)。此外,Ruby还有数组(Array)和哈希(Hash)等复合数据类型。 2. ...
符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`lambda`可以创建匿名函数,它们可以被赋值给变量,作为参数传递,或者用作方法的...
本套官方文档包含了关于Ruby核心库、标准库、语言特性和整体框架的详细信息,是学习和深入理解Ruby不可或缺的参考资料。 《ruby23-stdlib.chm》文档主要涵盖了Ruby的标准库(Standard Library)。Ruby标准库提供了...
- **符号**:Ruby中的符号(Symbol)是一种轻量级的标识符,通常用于表示名称或键值,比字符串更高效。 - **字符串处理**:提供丰富的字符串处理功能,如字符串插值、多行字符串、正则表达式等。 - **异常处理**:...
10. **符号(Symbol)**:在Ruby中,符号是不可变的字符串引用,用`:symbol`表示。它们在内存中只存储一份,适合用作哈希键或标识符,提高性能。 通过深入学习以上这些概念,你将能够掌握Ruby面向对象编程的基本...
7. **Symbol垃圾收集**:在Ruby 2.0之前,所有创建的Symbol都会永久存在内存中,但在2.0中,未使用的Symbol会被垃圾收集器回收,节省了内存。 8. **YARV虚拟机优化**:Ruby 2.0继续使用YARV(Yet Another Ruby VM)...
- **符号(Symbol)**:Ruby 中的 Symbol 类型是一种不可变的字符串,通常用于标识符。 - **元编程**:Ruby 提供了一系列方法来实现元编程,例如 `eval`、`send`、`method_missing` 等。 - **多线程**:虽然 Ruby 本身...