Date
Nov. 21st, 2024
 
2024年 10月 21日

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
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询