本文概述
- 局部变量
- 类变量
- 实例变量
- 全局变量
- 摘要
Ruby中有四种类型的变量:
- 局部变量
- 类变量
- 实例变量
- 全局变量
文章图片
局部变量 局部变量名称以小写字母或下划线(_)开头。它只能访问或在其初始化块内包含其范围。代码块完成后, 变量将没有作用域。
当调用未初始化的局部变量时, 它们被解释为对没有参数的方法的调用。
类变量 类变量名以@@符号开头。它们需要在使用前进行初始化。一个类变量属于整个类, 可以从该类内部的任何位置访问。如果该值将在一个实例上更改, 则它将在每个实例上更改。
类变量由该类的所有后代共享。未初始化的类变量将导致错误。
例:
#!/usr/bin/ruby class States
@@no_of_states=0
def initialize(name)
@states_name=name
@@no_of_states += 1
end
def display()
puts "State name #@state_name"
end
def total_no_of_states()
puts "Total number of states written: #@@no_of_states"
end
end # Create Objects
first=States.new("Assam")
second=States.new("Meghalaya")
third=States.new("Maharashtra")
fourth=States.new("Pondicherry") # Call Methods
first.total_no_of_states()
second.total_no_of_states()
third.total_no_of_states()
fourth.total_no_of_states()
在上面的示例中, @@ no_of_states是一个类变量。
输出
文章图片
实例变量 实例变量名称以@符号开头。它属于该类的一个实例, 并且可以在方法中从该类的任何实例进行访问。他们仅具有对类的特定实例的有限访问权限。
他们不需要初始化。未初始化的实例变量将具有nil值。
例:
#!/usr/bin/ruby class States
def initialize(name)
@states_name=name
end
def display()
puts "States name #@states_name"
end
end # Create Objects
first=States.new("Assam")
second=States.new("Meghalaya")
third=States.new("Maharashtra")
fourth=States.new("Pondicherry") # Call Methods
first.display()
second.display()
third.display()
fourth.display()
在上面的示例中, @states_name是实例变量。
输出
文章图片
全局变量 全局变量名称以$符号开头。它的范围是全局的, 这意味着可以从程序中的任何位置访问它。
未初始化的全局变量将具有nil值。建议不要使用它们, 因为它们会使程序变得晦涩复杂。
Ruby中有许多预定义的全局变量。
例:
#!/usr/bin/ruby $global_var = "GLOBAL"
class One
def display
puts "Global variable in One is #$global_var"
end
end
class Two
def display
puts "Global variable in Two is #$global_var"
end
end oneobj = One.new
oneobj.display
twoobj = Two.new
twoobj.display
在上面的示例中, @states_name是实例变量。
【Ruby变量介绍和使用图解】输出
文章图片
摘要
Local | Global | Instance | Class | |
---|---|---|---|---|
Scope | 限于初始化块内。 | 它的范围是全球性的。 | 它属于一个类的一个实例。 | 限于创建它们的整个类。 |
Naming | 以小写字母或下划线(_)开头。 | 以$符号开头。 | 以@符号开头。 | 以@@符号开头。 |
Initialization | 无需初始化。未初始化的局部变量被解释为不带参数的方法。 | 无需初始化。未初始化的全局变量将具有nil值。 | 无需初始化。未初始化的实例变量将具有nil值。 | 使用前需要对其进行初始化。未初始化的全局变量会导致错误。 |
推荐阅读
- Ruby方法用法详细图解
- Ruby哈希介绍和用法
- 什么是Ruby()
- Ruby While循环解释和用法
- Ruby与Python有什么区别()
- Ruby until循环语句用法详解
- Ruby教程介绍
- Ruby If-else语句介绍和用法图解
- Spring中ApplicationListener的使用