Date
Jul. 14th, 2024
 
2024年 6月 9日

Post: Ruby Primer 004: Variable and Constant

Ruby Primer 004: Variable and Constant

Published 12:02 Feb 28, 2013.

Created by @ezra. Categorized in #Programming, and tagged as #Ruby.

Source format: Markdown

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}"
Pinned Message
HOTODOGO
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF