class A
def self.ask1
puts "the method of class"
end
def ask2
puts "the method of instance"
end
end
#类的实例对象的方法,方法属于类所生成New出来的实例对象。
p a.methods.length
p a.class.instance_methods.length
p A.instance_methods.length
p a.public_methods.length
p a.class.public_instance_methods.length
输出:50
说明上面5种方式都是输出实例对象的方法
#增加a实例的单件方法
def a.tell
end
p a.methods.length
p a.class.instance_methods.length
p A.instance_methods.length
p a.public_methods.length
p a.class.public_instance_methods.length
输出:51 50 51 50
说明:类的instance_methods包括的只有他所拥有的实例方法,并不包含单件类的方法。并且methods方法其实和Public_methods一样的,有别于private_methods
#类的方法,方法属于类自己
p A.methods.length
p A.class.instance_methods.length
p A.public_methods.length
p A.class.public_instance_methods.length
输出:87 86 87 86
注:这里根据版本不同,1.8.6和1.9.2是有差别的。
现在说一下,method方法
这个方法属于Method类,最常用的就是检查方法的参数个数,如下:
class A
def self.ask1(n1,n2)
puts "the method of class"
end
def ask2(n1)
puts "the method of instance"
end
end
a=A.new
p a.method(:ask2).arity
p A.method(:ask1).arity
输出:1 2
这里不拘泥于所有方法的介绍,介绍的是比较常用的方法。
分享到:
相关推荐
`Module#define_method`用于动态定义方法,`Object#methods`和`Object#instance_variables`则分别用于查看对象的方法列表和实例变量。 例如,如果我们想为数组添加一个新的方法,允许我们查找最小值,可以这样做: ...
puts obj.class.instance_methods(true).delete_if { |method_name| method_name !~ /^my/ } ``` **输出结果:** ``` my_method ``` #### 四、动态定义(Dynamic Definition) Ruby支持动态定义方法的能力,这可以...
1. **方法定义与调用**:Ruby允许在运行时定义和修改方法,如`define_method`函数可以动态创建方法,而`send`或`__send__`则用于在运行时调用方法。 2. **类与模块操作**:Ruby的`Class.new`和`Module.new`可以用来...
根据给定文件的信息,这里似乎存在一定的混淆,因为文件内容主要涉及的是IBM Lotus Domino 7邮件服务器的配置指南,而非“Ruby元编程”。不过,基于您的需求,我将重点围绕“Ruby元编程”这一主题来生成相关的知识点...
10. **反射(Reflection)**:Ruby提供了一系列的内省方法,如`methods`,`instance_variables`,`ancestors`等,允许程序检查自身结构,这对于调试和元编程非常有用。 通过熟练掌握上述概念和技巧,Ruby开发者可以...
- Discusses naming conventions for methods in Ruby, including the use of lowercase letters and underscores for method names. 17. **Default Arguments** - Explains how to define methods with default ...
- **Method Use:** Methods are central to Ruby's object-oriented nature. The book covers the syntax for defining and calling methods, including default and variable arguments. - **Classes and Modules ...
### Ruby袖珍参考手册知识点概览 #### 一、书籍简介 《Ruby袖珍参考手册》是一本旨在帮助Ruby开发者快速查找所需知识点的手册。无论你是通过Rails框架接触Ruby,还是因为Ruby是一种干净、强大且表达力丰富的语言而...
在这种情况下,`Car`只会获得`Base`模块中的类方法,而不会得到`InstanceMethods`模块中的实例方法。尝试通过`Car.new.love`调用`love`方法会导致`undefined method 'love'`的错误,因为`love`是实例方法,而不是类...
反身 Reflexive是一个基于Web的实时类和源... Reflexive基于标准的1.9.2 Ruby库,该库使用Method/UnboundMethod类,用于反射的methods/instance_methods方法和用于代码导航的Ripper解析器。 Checkout 博客文章,以进行
- **方法与函数的区别**:尽管在Ruby中方法和函数很相似,但方法更加强调对象导向的概念,它们总是与某个对象相关联。 #### 四、打开类与猴子补丁 - **打开类技术**:Ruby允许开发者在程序运行时修改现有的类定义,...
在实际的项目中,"charizard_attack"游戏的开发者可能还会利用Ruby的元编程能力,如定义方法动态地(`define_method`)或者在运行时检查对象的属性(`instance_variable_get`和`instance_variable_set`)。...
Ruby是一种完全基于面向对象编程(OOP)的语言,它的核心特性就是对象。在Ruby中,一切皆对象,包括基本类型如字符串、数字以及布尔值true和false。甚至类自身也是一个对象,它属于Class类的实例。面向对象编程的...
7. **Class Methods and Instance Methods**: 示例中的`Frigga::RPC::#{rpc_class}`引用的是一个类方法,而`define_method`和`alias`则在`Runner`类的实例上下文中使用,这意味着它们定义的是实例方法。 8. **...
在Ruby编程语言中,"student-classes"通常指的是创建一个表示学生的类,用于模拟和管理学生数据。在软件开发中,特别是在教育管理系统的构建中,这样的类是非常常见的。接下来,我们将深入探讨如何在Ruby中创建和...
1. **面向对象编程(Object-Oriented Programming, OOP)**:Ruby的核心就是OOP,每个数据都是一个对象,每个对象都有自己的属性(instance variables)和方法(methods)。类(Class)定义了对象的行为和属性,对象...
这些属性通过实例变量(Instance Variables)如`@name`来存储,并通过方法(Methods)如`name`和`species`来访问和修改。 接着,我们可以利用继承(Inheritance)来创建特定种类的宠物小精灵,例如`Bulbasaur`、`...