0 0

ruby 实例 变量的讨论10

因为时间原因, ruby的书没有读, 属于看着别人代码学习ruby的那种人。目前遇到一个关于实例变量的问题,想请教大家。先看代码
class Test  
  attr_accessor :info  
  @info = 'who am i?'
  @@info = 'who am i class?'  
  def change_info  
    @info = 'info changed'  
  end  
    
  def self.get_info  
    @info  
  end 
  
  def get_info
    @info
  end 
  
  def get_info2
    @@info
  end
  
  def self.get_info2
    @@info
  end
end  
  
a = Test.new  
a.info = 'info1'  
puts a.info  
a.change_info  
puts a.info  
puts a.get_info 
puts Test.get_info  
puts a.class.get_info
puts a.get_info2
puts Test.get_info2


运行结果:
info1
info changed
info changed
who am i?
who am i?
who am i class?
who am i class?

请问这个写在方法外面的@info是什么意思呢?应该不是实例变量但是也不是类变量

大家的意见呢?
问题补充:
看了open2ye的回答,我想我的问题就是:
irb(main):066:0> Test2.instance_variables
=> ["@v"]
irb(main):067:0> Test2.new.instance_variables
=> []

这里Test2为什么会有instance_variables, instance是什么?如果Test2有instance variable为什么我产生了一个instance里面却又没有@v了呢?
2008年8月05日 21:00

2个答案 按时间排序 按投票排序

0 0

采纳的答案


因为在 Ruby 中, 类Test2 也是实例

详细请看

http://www.iteye.com/topic/200720

2008年8月06日 16:30
0 0

irb(main):063:0> class Test2
irb(main):064:1> @v = "hello"
irb(main):065:1> end
=> "hello"
irb(main):066:0> Test2.instance_variables
=> ["@v"]
irb(main):067:0> Test2.new.instance_variables
=> []


irb(main):068:0> class T3
irb(main):069:1> @@v = "12"
irb(main):070:1> end
=> "12"
irb(main):071:0> T3.instance_variables
=> []
irb(main):072:0> T3.class_variables
=> ["@@v"]

2008年8月05日 23:37

相关推荐

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    本文将深入探讨Ruby语言中的类变量、全局变量、实例变量,以及多态的概念,并结合Ruby编码规范来阐述如何有效地编写代码。 一、类变量 类变量在Ruby中以`@@`前缀表示,它们是属于类或模块的共享变量,不会被类的...

    Ruby中类变量和实例变量的比较

    ### Ruby中类变量和实例变量的比较 在Ruby编程语言中,类变量和实例变量都是用来存储数据的重要机制。它们虽然都是变量,但在用途、作用范围、生命周期等方面有着明显的区别。接下来,我们将详细介绍这两者之间的四...

    Ruby中的变量学习总结

    Ruby中的变量有几种形式,分别是局部变量、实例变量、类变量、全局变量,对于初学者来说,常常容易搞混,尤其像本人这种做java的,理解起来还是头痛,经过仔细辨别学习,将这几种变量的差异及使用场景总结如下: ...

    Ruby语言教程:Ruby 变量示例

    本文将详细介绍 Ruby 中的五种主要变量类型:普通变量、全局变量、实例变量、类变量以及常量,并通过示例代码加深理解。 #### 二、Ruby中的变量类型详解 ##### 1. 普通变量 (Variable) - **定义与使用**: - 普通...

    Ruby类实例变量、类实例方法和类变量、类方法的区别

    在Ruby语言中,类实例变量、类实例方法与类变量和类方法是构成面向对象编程模型的重要组成部分。它们各自有不同的用途和行为特性,下面详细介绍这些概念的区别以及它们的使用场景。 首先,类实例变量和类实例方法都...

    01Ruby 变量.docx

    3. **实例变量 (Instance variable)**:以 `@` 开头。 4. **类变量 (Class variable)**:以 `@@` 开头。 5. **常量 (Constant)**:由大写字母开头。 接下来,我们将逐一探讨这些变量类型的使用方式和特点。 #### ...

    Ruby入门教程中文PDF 附实例

    本教程针对初学者,旨在帮助读者快速掌握Ruby的基础知识,并通过实例深入理解其用法。 首先,Ruby的基本语法是它的一大亮点。Ruby允许开发者以更自然的方式编写代码,这得益于它的语法接近于英语。例如,变量的声明...

    ruby 资源(代码范例)

    1. **变量**:Ruby有四种基本类型的变量,分别是局部变量(以小写字母或下划线开头)、实例变量(以`@`开头)、类变量(以`@@`开头)和全局变量(以`$`开头)。 2. **数据类型**:Ruby是动态类型语言,主要的数据...

    ruby oo基础知识实例变量实验室

    实例变量实验室 目标 定义实例变量。 区分实例变量和局部变量。 描述实例变量如何赋予对象属性和属性。 概述 当我们通过自己的类构建对象时,我们知道可以通过实例方法向对象添加行为。 但是,我们如何为对象提供...

    Ruby中文教程,佩戴实例

    变量在Ruby中有四种类型:局部变量、实例变量、类变量和全局变量,它们都有特定的标识符前缀。数据类型包括基本类型和复杂类型,如数组、哈希(字典)、集合等。 函数和方法是Ruby的核心组成部分。你可以定义自己的...

    实例讲解Ruby中的五种变量

    这里我们将深入探讨这些变量,包括全局变量、实例变量、类变量。 1. **全局变量**:全局变量在Ruby中以 `$` 符号开头。如标题所示的实例,`$global_variable` 就是一个全局变量。全局变量在整个程序中都可见,无论...

    ruby初级中文教程与实例

    1. 变量:Ruby中的变量分为五种类型:局部变量(以小写字母或下划线开头)、实例变量(以`@`开头)、类变量(以`@@`开头)、全局变量(以`$`开头)和常量(以大写字母开头)。每种变量都有其作用域和使用场景。 2. ...

    深入分析Ruby 变量

    @开头:实例变量(Instance variable)。 @@开头:类变量(Class variable)类变量被共享在整个继承链中 大写字母开头:常数(Constant)。 Ruby 全局变量 全局变量以 $ 开头。未初始化的全局变量的值为 nil,在...

    Ruby 基础语法 视频教程1

    - **实例变量**(Instance Variables):以`@`符号开头,如`@name = "Alice"`,在类的实例之间保存状态。 - **类变量**(Class Variables):以`@@`开头,用于在整个类的实例间共享数据,如`@@count = 0`。 - **...

    Ruby元编程pdf

    此外,`Object#send`方法允许动态调用对象的方法,而`instance_variable_set/get`则用于动态设置和获取实例变量。 5. **元类(Meta-class)**:每个Ruby对象都有一个元类,存储了对象的实例方法。元类的概念使得...

    Ruby 面向对象知识总结

    每个对象都有自己的实例变量副本,这意味着不同对象间的实例变量互不影响。 ```ruby class Box def initialize(width, height) @width = width @height = height end end ``` #### 六、访问器(Getter)和...

    ruby语言帮助文档(简体中文)

    Ruby也支持变量(局部变量、实例变量、类变量和全局变量),以及常量。 2. **面向对象编程**:Ruby是彻头彻尾的面向对象语言,一切皆对象。每个变量都是一个对象,具有属性(或称为实例变量)和行为(方法)。Ruby...

Global site tag (gtag.js) - Google Analytics