变量持有要使用的程序的数据的存储位置。
Ruby支持的有五种类型的变量。在前面的章节中已经经历了一个简短描述以及这些变量。本章中介绍的这五种类型的变量。
Ruby的全局变量:
全局变量以$开头。未初始化的全局变量的值是零,并使用-w选项产生警告。
全局变量的赋值会改变全局状态。这是不推荐使用全局变量。他们使得程序的含义模糊。
下面是一个例子显示使用全局变量。
#!/usr/bin/ruby$global_variable = 10class Class1 def print_global puts "Global variable in Class1 is #$global_variable" endendclass Class2 def print_global puts "Global variable in Class2 is #$global_variable" endendclass1obj = Class1.newclass1obj.print_globalclass2obj = Class2.newclass2obj.print_global
这里$global_variable是一个全局变量。这将产生以下结果:
注意: 在Ruby中,把一个哈希号(#)字符,在任意变量或常量之前能够访问它的值。
Global variable in Class1 is 10
Global variable in Class2 is 10
Ruby的实例变量:
实例变量@开始。未初始化的实例变量的值是零,并产生警告-w选项。
下面是一个例子显示使用实例变量。
#!/usr/bin/rubyclass Customer 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" endend# Create Objectscust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")cust2=Customer.new("2", "Poul", "New Empire road, Khandala")# Call Methodscust1.display_details()cust2.display_details()
这里的@cust_id, @cust_name 和 @cust_addr 都是实例变量。这将产生以下结果:
Customer id 1Customer name JohnCustomer address Wisdom Apartments, LudhiyaCustomer id 2Customer name PoulCustomer address New Empire road, Khandala
Ruby的类变量:
类变量以@@开始,它们可以被用来在方法定义之前必须初始化。
引用未初始化的类变量产生错误。类变量之间共享其中的类变量定义的类或模块的的后代。
覆盖类变量产生警告-w选项。
下面是一个例子显示使用类变量:
#!/usr/bin/rubyclass 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" endend# Create Objectscust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")cust2=Customer.new("2", "Poul", "New Empire road, Khandala")# Call Methodscust1.total_no_of_customers()cust2.total_no_of_customers()
新闻热点
疑难解答