Table of Content
对 Ruby 有了一个大概的认识之后,现在我们来了解一下 Ruby 语言中的变量和常量。
本地/局部变量(Local Variable
)
以小写字母或下划线(_
)开头的标识(zhì)符为本地变量,也称局部变量,例如:。
name = "Meniny"
实例变量(Instance Variable
)
以 @
开头的标识符为实例变量,它们属于某个类的实例,例如:
class someclass
@emptyvar
end
类变量
以 @@
开头的标识符为类变量,例如:
module somemodule
@@somevar = "Hello Ruby"
class someclass
def display
print "#@somevar"
end
end
end
全局变量(Global Variable
)
以 $
开头的标识符为全局变量,例如:
$some_path = "/var/mobile/"
伪变量
此外还有一些被称为伪变量的标识符,它们是只读的。
# 当前方法的执行体
print "#{self}"
# NilClass 类唯一实例
print "#{nil}"
# TrueClass 类唯一实例
print "#{true}"
# FalseClass 类唯一实例
print "#{false}"
# 当前源文件的文件名
print "#{__FILE__}"
# 当前源文件的行号
print "#{__LINE__}"
常量(Constant)
以大写字母开头的标识符为常量,对常量进行再次赋值会引发警告,而如果使用未定义的常量则会抛出 NameError
错误。
附:
在类和模块外部定义的常量属于
Object
。使用
::常量名
可以引用属于Object
的常量,使用模块名/类名::常量名
可以引用外部的常量。当引用模块和类中同名的常量时,优先引用嵌套树外侧的常量,
Object
的优先度最低,不过我建议大家尽量不使用同名常量。
例如:
# 属于 Object 的常量
GroupName = "心守家园"
4module Site
SiteUrl = "https://www.you2v.com"
class Sichuan
Add = "凉山"
# 引用属于 Object 的常量
print "#{::GroupName}"
end
end
# 直接引用类名、模块名
# 引用属于 Object 的模块时可以省略"::"
print "#{::Site}\n#{Site::Sichuan}"
# 属于模块的常量
print "#{Site::SiteUrl}"
# 属于类的常量
print "#{Site::Sichuan::Add}"