1.send的用法
在RUBY中可以在运行时,来决定那个对象被调用,send方法就是做这个的,他接受一个symbol变量为参数。
首先来个非常非常的简单的例子:
class Foo
def foo
"aa"
end
end
puts Foo.new.__send__(:foo)
当然也可以使用send方法,不过为了和可能出现的自己类中定义的send方法区别,推荐使用__send__方法
在1.9中,send方法不能调用private方法了,不过我们能够使用__send!来调用:
class Foo
private
def foo
"aa"
end
end
p Foo.new.__send!(:foo) # => nil
p Foo.new.send(:foo) #private method `foo' called for #<Foo:0xa89530> (NoMethodError)
下面有个排序的比较全的例子:
class Person
attr_reader :name, :age, :height
def initialize(name, age, height)
@name, @age, @height = name, age, height
end
def inspect
"#@name #@age #@height"
end
end
class Array
def sort_by(sym) # Our own version of sort_by
self.sort {|x,y| x.send(sym) <=> y.send(sym) }
end
end
people = []
people << Person.new("Hansel", 35, 69)
people << Person.new("Gretel", 32, 64)
people << Person.new("Ted", 36, 68)
people << Person.new("Alice", 33, 63)
p1 = people.sort_by(:name)
p2 = people.sort_by(:age)
p3 = people.sort_by(:height)
p p1 # [Alice 33 63, Gretel 32 64, Hansel 35 69, Ted 36 68]
p p2 # [Gretel 32 64, Alice 33 63, Hansel 35 69, Ted 36 68]
p p3 # [Alice 33 63, Gretel 32 64, Ted 36 68, Hansel 35 69]
分享到:
相关推荐
《Practical Object-Oriented Design in Ruby 新版 实战ruby面向对象设计》是一本非常受欢迎的编程书籍,它不仅是学习Ruby语言的重要参考资料,也是深入理解面向对象编程(OOP)技术不可或缺的宝贵资料。这本书由于...
### Ruby面向对象知识总结 #### 一、Ruby的面向对象特性 **Ruby**是一种完全面向对象的编程语言,这意味着在Ruby中,一切事物都是对象。无论是字符串、数字、布尔值甚至是`true`和`false`这样的基本数据类型,都是...
Ruby教程面向对象脚本语言,是由日本的松本行弘(Matsumoto Yukihiro,又称Matz)在1993年创建的一种高级程序设计语言。Matz出于对脚本语言的兴趣,尤其是面向对象编程的追求,决定设计一种新的语言,因为他发现Perl...
Ruby是一种典型的面向对象编程语言,几乎所有的代码都是通过类和对象来组织的。例如: ```ruby class Person attr_accessor :name, :age def initialize(name, age) @name = name @age = age end def say_...
面向对象编程** - **一切皆为对象** - 在Ruby中,所有事物都是对象,包括数字、字符串等基本类型。 - **丰富的面向对象特性** - 支持类、继承、封装等面向对象的基本概念,并提供了一系列高级特性,如模块包含、...
Ruby是为面向对象编程设计的,其中一切皆对象。书中会解释类、对象、继承、方法、模块(用于代码重用和分类)的概念,以及如何使用Ruby的元编程能力来动态定义和修改类和方法。 此外,书中还会涵盖Ruby的异常处理...
- **面向对象编程**:深入讲解了Ruby中的类、模块、继承等面向对象编程特性。 - **核心库和工具**:详细介绍了Ruby标准库中的一些重要模块,如数组、哈希表等,并探讨了常用的Ruby工具和环境配置方法。 - **高级...
总之,"ruby程序设计"涵盖了从Ruby语言基础到高级特性的全面讲解,包括Ruby的历史、特性,环境配置,类与对象的原理,以及如何利用Ruby on Rails框架开发Web应用程序。无论你是初学者还是经验丰富的开发者,这份资料...
10. 重载运算符和方法:Ruby允许程序员对操作符和方法进行重载,以提供更加面向对象的语法糖。例如,通过重载操作符 `,可以使自定义类的实例支持 `push` 方法。 本书作为填补了语言参考手册和编程食谱书之间的空白...
Ruby作为一种高级编程语言,提供了简洁而强大的语法结构,支持多种编程范式,使其成为开发各种类型应用的理想选择。RESTful API则是现代Web开发的重要组成部分,它通过清晰的架构和标准的接口规范,促进了不同系统...
这种设计使得 Ruby 能够很好地支持类、对象、继承、多态等面向对象的核心概念和技术,有助于构建复杂的软件系统。 #### 四、元编程能力 元编程是指在运行时修改或扩展程序的能力。Ruby 提供了一系列强大的元编程...
### 三、面向对象编程(OOP)在Ruby中的应用 #### 3.1 类与对象 - **类**:用于定义对象的蓝图或模板。 - **实例化**:通过类创建具体的对象。 - **属性与方法**:类中的属性用于存储数据,方法则定义对象的行为。 #...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。Ocra,全称为"One-Click Ruby Application",是专门为Ruby开发者设计的一个工具,它允许用户将Ruby源代码打包成独立的可...
Ruby是一种面向对象的脚本语言,以其简洁、优雅的语法和强大的编程能力而闻名。这份“Ruby教程.chm”和“Ruby程序设计.doc”提供了学习Ruby的宝贵资源,旨在帮助初学者快速掌握Ruby的核心概念和编程技巧。 首先,让...
Ruby语言教程可以涵盖从基础入门到高级应用的多个方面。以下是一个简要的Ruby语言教程概述,旨在帮助初学者快速上手并理解Ruby编程的基本概念。 一、Ruby语言简介 Ruby是一种简单快捷的面向对象脚本语言,由日本人...
Ruby是一种动态、面向对象的编程语言,以其简洁、优雅和开发效率高而受到开发者欢迎。本教程旨在帮助初学者快速掌握Ruby语言的基础知识,并逐步深入到实际应用和高级主题。
在本文件中,我们将深入探讨面向对象编程(OOP)的基本原理、几种典型的OOP语言以及它们的特点。 首先,程序设计语言与软件设计方法密切相关。早期的过程性语言,如FORTRAN、ALGOL、COBOL和APL/I,主要关注编写程序...