Ruby 变量的类型

Ruby 变量的类型

在Ruby中,有不同类型的变量。

  • 本地变量
  • 实例变量
  • 类变量
  • 全局变量

在Ruby中,每个变量都是通过在变量名称的开头使用一个特殊的字符来声明的,这在下表中提到。

符号 变量的类型
[a-z] 或 _ 本地变量
@ 实例变量
@@ 类变量
$ 全局变量

本地变量: 本地变量的名字总是以 小写字母(a-z)或下划线(_) 开头 。 这些变量在声明它们的代码结构中是局部的。一个局部变量只能在其初始化的区块内访问。本地变量在方法之外是不可用的。没有必要对局部变量进行初始化。

例子

age = 10
_Age = 20

实例变量: 一个实例变量的名字总是以 @ 符号开头。它们类似于类变量,但它们的值是对象的特定实例的局部。实例变量在任何指定的实例或对象的方法中都是可用的,也就是说,实例变量可以从一个对象变为另一个对象。不需要初始化实例变量,未初始化的实例变量总是包含一个 nil 值。

例子

#!/usr/bin/ruby
# Ruby program to illustrate 
# the Instance Variables
  
class Customer
      
 def initialize(id, name, addr)
       
# Instance Variables     
 @cust_id = id
 @cust_name = name
 @cust_addr = addr
 end
   
 # displaying result
 def display_details()
 puts "Customer id #@cust_id"
 puts "Customer name #@cust_name"
 puts "Customer address #@cust_addr"
 end
end
  
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
  
# Call Methods
cust1.display_details()
cust2.display_details()

输出

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala

类变量 : 班级变量的名称总是以 @@ 符号开始。它可以在不同的对象中使用。类变量属于类,它是一个类的特征。它们在使用前需要被初始化。另一种思考类变量的方式是在单个类的范围内作为全局变量。一个类变量被该类的所有后代所共享。一个未初始化的类变量将导致一个错误。

例子

#!/usr/bin/ruby
# Ruby program to illustrate 
# the Class  Variables
  
class Customer
      
# class variable
 @@no_of_customers = 0
   
 def initialize(id, name, addr)
       
# An instance Variable
 @cust_id = id
 @cust_name = name
 @cust_addr = addr
 end
  
# displaying result 
 def display_details()
 puts "Customer id #@cust_id"
 puts "Customer name #@cust_name"
 puts "Customer address #@cust_addr"
 end
   
 def total_no_of_customers()
       
# class variable
 @@no_of_customers += 1
 puts "Total number of customers: #@@no_of_customers"
    end
end
  
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
  
# Call Methods
cust1.display_details()
cust1.total_no_of_customers()
cust2.display_details()
cust2.total_no_of_customers()

输出

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Total number of customers: 1
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala
Total number of customers: 2

全局变量: 全局变量的名字总是以 $ 开头 。 班级变量不能跨班使用。如果你想拥有一个可以跨类使用的单一变量,你需要定义一个全局变量。它的范围是全局的,意味着它可以在程序的任何地方被访问。默认情况下,未初始化的全局变量的值为零,它的使用会使程序变得隐蔽和复杂。

例子

#!/usr/bin/ruby
# Ruby program to illustrate 
# the Global  Variables
  
#!/usr/bin/ruby
  
# global variable
global_variable = 10
class Class1
 def print_global
 puts "Global variable in Class1 is #global_variable"
 end
end
class Class2
 def print_global
 puts "Global variable in Class2 is #$global_variable"
 end
end
class1obj = Class1.new
class1obj.print_global
class2obj = Class2.new
class2obj.print_global

输出

Global variable in Class1 is 10
Global variable in Class2 is 10

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程