详解Ruby 变量

Ruby是一种解释型、面向对象、动态类型的语言。Ruby采取的策略是在灵活性和运行时安全之间寻找平衡点。随着Rails框架的出现,Ruby也在2006年前后一鸣惊人,同时也指引人们重新找回编程乐趣。

变量是持有可被任何程序使用的任何数据的存储位置。 Ruby 支持五种类型的变量。

  • 1.一般小写字母、下划线开头:变量(Variable)。
  • 2.$开头:全局变量(Global variable)。
  • 3.@开头:实例变量(Instance variable)。
  • 4.@@开头:类变量(Class variable)类变量被共享在整个继承链中
  • 5.大写字母开头:常数(Constant)。

Ruby 全局变量

全局变量以 $ 开头。未初始化的全局变量的值为 nil,在使用 -w 选项后,会产生警告。 给全局变量赋值会改变全局状态,所以不建议使用全局变量。 下面的实例显示了全局变量的用法。 实例

#!/usr/bin/ruby# -*- coding: UTF-8 -*-$global_variable = 10
class Class1
 def print_global
     puts "全局变量在 Class1 中输出为 #$global_variable"
 end
end
class Class2
 def print_global
     puts "全局变量在 Class2 中输出为 #$global_variable"
 end
end

class1obj = Class1.new
class1obj.print_global
class2obj = Class2.new
class2obj.print_global

在这里,$global_variable 是全局变量。这将产生以下结果: 注意:在 Ruby 中,您可以通过在变量或常量前面放置 # 字符,来访问任何变量或常量的值。

全局变量在 Class1 中输出为 10
全局变量在 Class2 中输出为 10

Ruby 实例变量

实例变量以 @ 开头。未初始化的实例变量的值为 nil,在使用 -w 选项后,会产生警告。

下面的实例显示了实例变量的用法。 实例

#!/usr/bin/ruby

class Customer
  def initialize(id, name, addr)
     @cust_id=id
     @cust_name=name
     @cust_addr=addr
  end
  def display_details()
     puts "Customer id #@cust_id"
     puts "Customer name #@cust_name"
     puts "Customer address #@cust_addr"
   end
end

# 创建对象
cust1=Customer.new("1""John""Wisdom Apartments, Ludhiya")
cust2=Customer.new("2""Poul""New Empire road, Khandala")

# 调用方法
cust1.display_details()
cust2.display_details()

在这里,@cust_id、@cust_name 和 @cust_addr 是实例变量。这将产生以下结果:

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

Ruby 类变量

类变量以 @@ 开头,且必须初始化后才能在方法定义中使用。 引用一个未初始化的类变量会产生错误。类变量在定义它的类或模块的子类或子模块中可共享使用。 在使用 -w 选项后,重载类变量会产生警告。 下面的实例显示了类变量的用法。 实例

#!/usr/bin/ruby

class Customer
  @@no_of_customers=0
  def initialize(id, name, addr)
     @cust_id=id
     @cust_name=name
     @cust_addr=addr
  end
  def display_details()
     puts "Customer id #@cust_id"
     puts "Customer name #@cust_name"
     puts "Customer address #@cust_addr"
   end
   def total_no_of_customers()
      @@no_of_customers += 1
      puts "Total number of customers: #@@no_of_customers"
   end
end

# 创建对象
cust1=Customer.new("1""John""Wisdom Apartments, Ludhiya")
cust2=Customer.new("2""Poul""New Empire road, Khandala")

# 调用方法
cust1.total_no_of_customers()
cust2.total_no_of_customers()

在这里,@@no_of_customers 是类变量。这将产生以下结果:

Total number of customers: 1
Total number of customers: 2

Ruby 局部变量

局部变量以小写字母或下划线 _ 开头。局部变量的作用域从 class、module、def 或 do 到相对应的结尾或者从左大括号到右大括号 {}。 当调用一个未初始化的局部变量时,它被解释为调用一个不带参数的方法。 对未初始化的局部变量赋值也可以当作是变量声明。变量会一直存在,直到当前域结束为止。局部变量的生命周期在 Ruby 解析程序时确定。 在上面的实例中,局部变量是 id、name 和 addr。

Ruby 常量

常量以大写字母开头。定义在类或模块内的常量可以从类或模块的内部访问,定义在类或模块外的常量可以被全局访问。 常量不能定义在方法内。引用一个未初始化的常量会产生错误。对已经初始化的常量赋值会产生警告。 实例

#!/usr/bin/ruby# -*- coding: UTF-8 -*-

class Example
  VAR1 = 100
  VAR2 = 200
  def show
      puts "第一个常量的值为 #{VAR1}"
      puts "第二个常量的值为 #{VAR2}"
  end
end

# 创建对象
object=Example.new()
object.show

在这里,VAR1 和 VAR2 是常量。这将产生以下结果:

第一个常量的值为 100
第二个常量的值为 200

Ruby 伪变量

它们是特殊的变量,有着局部变量的外观,但行为却像常量。您不能给这些变量赋任何值。

  • 1.self: 当前方法的接收器对象。
  • 2.true: 代表 true 的值。
  • 3.false: 代表 false 的值。
  • 4.nil: 代表 undefined 的值。
  • 5.
    FILE: 当前源文件的名称。
  • 6.
    LINE: 当前行在源文件中的编号。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/203425.html<

(0)
管理的头像管理
上一篇2025-04-06 16:35
下一篇 2025-04-06 16:36

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注