Ruby 中的实例变量
Ruby中有四种不同类型的变量——局部变量、实例变量、类变量和全局变量。 ruby 中的实例变量的名称以@ 符号开头,其内容仅限于对象本身所指的任何内容。两个独立的对象,即使它们属于同一个类,也允许它们的实例变量具有不同的值。
以下是 Ruby 中实例变量的一些特征:
- 实例变量在初始化之前的值为 nil。
- 默认情况下,所有实例变量都是私有的。
- 对象的实例变量只能由该对象的实例方法访问。
- ruby 实例变量不需要声明。这意味着灵活的对象结构。
- 每个实例变量在首次引用时都会动态附加到对象。
- 实例变量属于对象本身(每个对象都有自己的该特定类的实例变量)
- 一个实例对象可以在不修改任何其他实例的情况下更改其实例变量的值。
- 一个实例变量可以被多个类方法使用,除非该方法被认为是静态的。
示例 #1:
# Ruby program to illustrate instance variables using constructor
class Geek
# constructor
def initialize()
# instance variable
@geekName = "R2J"
end
# defining method displayDetails
def displayDetails()
puts "Geek name is #@geekName"
end
end
# creating an object of class Geeks
obj=Geek.new()
# calling the instance methods of class Geeks
obj.displayDetails()
输出:
Geek name is R2J
在上述程序中, geekName是使用构造函数初始化的实例变量,由 Geek 类的实例方法displayDetails()访问。
让我们看另一个程序来说明 Ruby 中实例变量的使用:
示例 #2:
# Ruby program to illustrate instance variables using instance methods
class Geek
# defining instance method getAge
def getAge(n)
# instance variable
@geekAge = n
end
# defining instance method incrementAge
def incrementAge()
@geekAge +=1
end
# defining instance method displayDetails
def displayDetails()
puts "Geek age is #@geekAge"
end
end
# creating an object of class Geeks
obj = Geek.new
# calling the instance methods of class Geeks
obj.getAge(20)
obj.displayDetails()
obj.incrementAge()
obj.displayDetails()
输出:
Geek age is 20
Geek age is 21
在上面的程序中, geekAge是在实例方法getAge()中初始化的实例变量,这里 geekAge 也被另外两个实例方法incrementAge()和displayDetails () 访问,其中 incrementAge() 方法修改了 geekAge 和 displayDetails( ) 用于显示 geekAge 的值。