-
RUBY内部类怎么访问外部类的变量15
class Aaa attr_accessor :name def get_name @name end def put(name) @name=name aa="hello" class<<aa def print_hello STDOUT.puts self+Aaa::get_name end end aa.print_hello end end z=Aaa.new z.put "pp"
这段代码,我希望输出 hellopp
Aaa::get_name我试过替换成@name,name,get_name都失败了。。
问题补充:
z=Aaa.new
z.put "pp"
liuqiang你习惯回帖不看帖吗?
2008年7月11日 17:32
相关推荐
- **类变量**:类变量被认为是私有的,不能直接在类外部访问。但是,可以通过定义类方法或实例方法来间接访问类变量。 - **实例变量**:同样被认为是私有的,在类外部也不能直接访问。同样地,可以通过定义实例...
例如,如果有一个`Person`类,可以定义实例变量`@name`、`@age`等,并提供方法来访问这些变量,而不是直接允许外部代码直接修改这些变量。 - **继承**:继承使得一个类可以继承另一个类的属性和方法。这是面向对象...
变量分为局部变量、全局变量、实例变量和类变量,每种变量的作用域和生命周期不同,提供了灵活的数据封装和访问控制。 **常量**以大写字母开头,尽管Ruby允许对常量进行重新赋值,但这将触发警告,强调常量应保持...
- 方法定义:Ruby允许在类定义内部以及类外部定义方法,还可以使用`def self.method_name`定义类方法。 3. **Ruby on Rails** - Rails是基于Ruby的Web开发框架,遵循MVC(模型-视图-控制器)架构模式。 - ...
实例变量在对象的生命周期内有效,并且是私有的,不能直接从外部访问。除非通过方法暴露。下面是一个使用实例变量的例子: ```ruby class MyClass def initialize(@my_attribute) # ... end end ``` 这里,`@my_...
对象可以访问类定义的方法,并且可以通过实例变量存储数据。 ```ruby person = Person.new("Alice", 30) person.speak # 输出 "Hello, my name is Alice." ``` **3.3 继承** Ruby支持单一继承,子类可以继承父类...
- **封装**:通过私有方法和属性限制对外部的直接访问,保护内部状态。 - **继承**:允许子类继承父类的属性和方法,实现代码重用。 - **多态**:同一接口可以表示不同的行为,增强了程序的灵活性。 通过以上知识点...
Ruby还支持动态类型,意味着变量的类型在运行时确定,这为编程提供了更大的灵活性。 Ruby的面向对象特性非常强大,它包含了类、对象、继承、封装和多态等核心概念。Ruby中的类可以用来创建新的对象,而对象则是类的...
- **require/load:** 用于加载外部的Ruby文件。 - **include:** 用于将一个模块混合到当前类中。 #### 九、异常 **9.1 异常处理** Ruby提供了try/catch风格的异常处理机制。 **9.2 定义异常类** 可以定义...
- 封装:通过访问控制符(public, private, protected)实现数据封装,保护内部状态不被外部直接修改。 - 多态:不同类的对象可以响应相同的消息,实现代码的复用和扩展。 2. **基本语法** - 变量:Ruby有局部...
通过命令行参数,我们可以传递参数给Ruby脚本并在脚本内部处理。标准输入/输出则允许脚本与用户或其它程序进行数据交换。文件操作允许脚本读写文件,实现数据持久化。网络通信则支持HTTP、TCP/IP等协议,使得脚本...
3. 封装:通过私有方法(private)和保护方法(protected)实现,限制对象的内部状态被外部直接访问。 4. 单例类:Ruby中每个对象都有一个与之关联的单例类,可以为单个对象添加方法。 三、模块(Module) 模块是...
- Ruby提供了不同的访问级别来控制类内部数据的访问权限,包括public、protected和private。 **3.7 元类** - 元类是创建类的类,可以用来定制类的行为。 - 在Ruby中,每个类都有一个隐式的元类。 **3.8 变量** - *...
Ruby中的访问控制允许开发者指定哪些方法和变量可以被外部访问或修改。 10. 单例方法 单例方法允许开发者为单个对象创建独立的方法,这在Ruby中是一个非常有用的功能。 11. 过程对象 Ruby中的过程对象是类似于其他...
在类外部,不能直接访问实例变量。比如: ```ruby class Customer def initialize(id, name, addr) @cust_id = id @cust_name = name @cust_addr = addr end end cust1 = Customer.new("1", "John", ...
- **局部变量**:作用域限制在定义它的方法内部。 - **实例变量**:以`@`开头,作用于整个类的所有实例。 - **类变量**:以`@@`开头,作用于整个类的所有实例及子类。 - **全局变量**:以`$`开头,可在程序的任何...
描述:一个类过分依赖于另一个类的内部状态或行为。 解决方法:可以尝试将相关的功能转移到拥有这些状态的类中,或是通过组合的方式让这些类协作完成任务。 - **中间人 (Middle Man)** 描述:一些方法仅仅...
- **目的**:保护对象的内部状态不被外部直接访问,仅通过公共接口与外界交互。 **多态**: - **定义**:指不同对象对同一消息作出响应的能力。 - **实现方式**:通过方法重写实现。 #### 四、常用库与框架 **...