美文网首页
Ruby:类中的变量

Ruby:类中的变量

作者: Wougle | 来源:发表于2018-01-10 10:05 被阅读0次

Ruby提供了四种变量,分别是局部变量、实例变量、类变量、全局变量。

一、命名方式

局部变量:小写字母或者“_”开头,如user或者_user,解释器解释到时才开始在内存中存在,在进行变量定义时用nil进行赋值初始化;
实例变量:以@开头,如@user,默认初始化为nil,此处的“实例”指的是类对象本身,或者类的对象;
类变量:以@@开头,如@@user,需要进行初始化后才能调用;
全局变量:以$开头,如$user,默认初始化为nil;

二、作用范围

局部变量:如user,只作用于本类、本方法或本模块内。Ruby中的局部变量,类中定义的,只能在类中访问,其子类、方法、内部类中都无法调用,如下边示例代码

class Account  
    user=User.new  
    def myMethod  
        puts user.name   #调用发生错误,user未定义  user的作用域不在此
    end  
end  

实例变量:如@user,作用于本实例对象范围内或本类的实例对象范围内,在类定义内对实例变量的赋值和读取没有限制;在类外访问实例变量时,则可以通过方法来访问。
比如user,是User类的一个对象,user.new是User类的一个实例对象,这是两个相互独立的域,定义在Account中的变量不能在Account.new中访问,反之亦然,如下边示例代码

class A    
  #类的类实例变量在访问前可以赋值也可以不赋值,不赋值就是nil    
  @alpha='This is @alpha\' value!'   
    
  def A.look  
    puts "#@alpha"    
  end  
  def look    
    puts "#@alpha"    
  end  
end    
  
A.look        #输出:'This is @alpha' value!''  
A.new.look    #输出:''

类变量:如@@user,作用于类的所有范围,所有实例对象共享,包括子类及其实例对象,类变量通过Protected声明的,如下边示例代码


class A    
  #类的类实例变量在访问前可以赋值也可以不赋值,不赋值就是nil    
  @@alpha='This is @alpha\' value!'   
  
  def A.look  
    puts "#@@alpha"    
  end  
  def look   
    puts "#@@alpha"    
  end  
  def look_again    
    puts "#@@alpha"    
  end  
end    
  
class B<A  
end  
  
A.look        #输出:'This is @alpha' value!'  
B.look        #输出:'This is @alpha' value!'  
a=A.new  
a.look        #输出:'This is @alpha' value!'  
a.look_again  #输出:'This is @alpha' value!'  
b=B.new  
b.look        #输出:'This is @alpha' value!'  
b.look_again  #输出:'This is @alpha' value!'  

全局变量:如$user,尽量少使用 ,作用于整个程序的生命周期,常驻内存,过量使用会引起性能下降,内存溢出,Ruby内置一些全局变量,获取相关数据十分方便,如$0’代表的是所运行应用程序的文件名称,‘$:’代表的是默认的文件搜索路径;'$$'代表的是 ruby 程序的进程 id

相关文章

  • Ruby类(二)

    类 Ruby是一种面向对象语言 定义类 类中的变量 Ruby 提供了四种类型的变量: 局部变量:局部变量是在方法中...

  • Ruby:类中的变量

    Ruby提供了四种变量,分别是局部变量、实例变量、类变量、全局变量。 一、命名方式 局部变量:小写字母或者“_”开...

  • ruby基础

    一、Ruby 类中的变量(Ruby 提供了四种类型的变量) 局部变量:局部变量是在方法中定义的变量。局部变量在方...

  • From Objective-C to Ruby(4)-类和模块

    类 定义类 OC: ruby: 初始化方法 OC: ruby: 实例变量和属性 OC: ruby: 类方法和对象方...

  • Ruby边学边记

    Ruby边学边记 该篇主要描述类 Ruby定义一个类 以@@开始的是类变量 以@开始的是实例变量 以$开始的是全局...

  • Ruby 在类中定义常量 + 类变量

    常量 在 class 语句中可以定义常量. 对于在类中定义的常量, 我们可以像下面这样使用::通过类名来实现外部访...

  • ruby中实例变量、类变量、实例方法、类方法区别

    实例变量和类变量 1、实例变量可以理解为类属性,能被类方法访问,不能被实例方法调用不能被继承,子类中赋值不会影响父...

  • Ruby预定义全局变量

    预设全局变量 2.ruby Object类定义的常量

  • Ruby中的类

    初识ruby中的类 只需要简单的两行 如果我们此时实例化一个类那么他会有一些自省(introspection)的方...

  • Ruby中的几种变量

    类变量:class variable, 例如: @@name, 作用域:所有的多个instance 会共享这个变量...

网友评论

      本文标题:Ruby:类中的变量

      本文链接:https://www.haomeiwen.com/subject/lfbnnxtx.html