全局变量
全局变量以 $
开头,并且未初始化的全局变量值为空;全局变量能够跨类使用。
范例:
#!/usr/bin/ruby #文件名为global.rb
$global_var = 10 #定义全局变量
class Class1
def print_global
puts "Global variable in Class1 is #$global_var."
#通过在变量或常量的前面放置”#”,可以实现对任何变量或常量的访问
end
end
class Class2
def print_global
puts "Global variable in Class2 is #$global_var."
end
end
class1obj = Class1.new #创建一个对象
class1obj.print_global #对象调用成员函数,成员函数调用全局变量
class2obj = Class2.new
class2obj.print_global
运行:
实例变量
实例变量以 @
开头;实例变量可以跨任何特定的实例或对象中的方法。
范例:
#!/usr/bin/ruby #文件名为cust.rb
class Customer
def initialize(id, name, addr)
@cust_id=id #定义一个cust_id实例变量
@cust_name=name
@cust_addr=addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
#访问实例变量
end
end
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
#创建两个对象
cust1.display_details() #调用成员函数,成员函数调用实例变量
cust2.display_details()
运行:
类变量
类变量以 @@
开头,而且需要初始化之后才能在方法定义中使用; 类变量属于类,是类的一个属性,同时类变量可以跨不同的对象使用。
范例:
#!/usr/bin/ruby #文件名为class_var.rb
class Customer
@@no_of_customers=0
def initialize(id, name, addr)
@cust_id=id
@cust_name=name
@cust_addr=addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
end
def total_no_of_customers()
@@no_of_customers += 1
puts "Total number of customers: #@@no_of_customers"
end
end
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
cust1.total_no_of_customers()
cust2.total_no_of_customers()
运行:
$ ruby class_var.rb
局部变量
局部变量是在方法中定义的变量,在方法外不可定义; 局部变量是以小写字母或者下划线 _
开头的。