博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
局部变量、全局变量、对象变量、类变量
阅读量:4051 次
发布时间:2019-05-25

本文共 1064 字,大约阅读时间需要 3 分钟。

局部变量 :只能在变量定义的相同地方使用。如果转而调用对象的方法,或者调用自己的独立方法,变量是不起作用的,所以她的作用域(scape )被视为局部的,她只在局部代码内出现。

E.g.

def basic_method

     x = 50

     puts x

end

 

x = 10

basic_method

puts x

 

Result:

50

10

 

全局变量 : 她在程序的任何地方都可以使用,包括类和对象中。 ,    全局变量很有用, 但在ruby中并不常用。

她于面向对象编程的思想有点出入,因为一旦定义了全局变量代码就可能一依赖于他们。 而面向对象编程有一个很有用的能力,那就是吧逻辑代码块相互隔离。

E.g.

def basic_method

     puts $x

end

 

$x = 10

basic_method

puts $x

 

Result:

10

10

 

实例变量 : 局部变量被限制于局部作用域,而全局变量有扩大为全局作用域。而对象变量(object variable)的作用域在于当前的对象,可以说很方便简捷, 很符合面向对象的思想。

E.g.

Class Square

     def initialize(slide_length)

          @slide_length = slide_length

     end

 

     def area

 

          @slide_length *@slide_length

     end

end

 

a = Square.new(10)

b = Square.new(6)

puts a.area

puts b.area

 

Result:

100

36

 

类变量 : 她的作用域在整个类中,而不是处于该类的特定对象中。与对象变量的单个@符号相比,类变量以两个@@符号作为前缀。

对于存储与某类所有对象都相关的信息,她特别有用。

E.g.

class square

     def initialize

          if defined?(@@number_of_squares)

               @@number_of_squares += 1

          else

               @@number_of_squares =1

          end

     end

end

由于@@number_of_squares是一个类变量,因此每次创建新对象时她已经存在(除了第一次,不过这正是要检查她是否已经存在的原因,如果不存在,则向其赋予初始值1)

PS: 或者用三木运算符来简化代码。

@@number_of_squares = defined?(@@number_of_squares)?@@number_of_squares+1:1

 

转载地址:http://srcci.baihongyu.com/

你可能感兴趣的文章
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
教育数字智能化能为现有体系带来新的起点
查看>>
媒体广告业如何将内容资产进行高效地综合管理与利用
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>