• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Ruby self在不同环境的含义
    而由于ruby作为一个完全纯净的面向对象语言,任何东东都是对象,方法是对象,类也是对象...,所以self就会有很多环境,区分不同环境的self含义才能更好的理解程序的含义
    一、Top Level Context
    Ruby代码
    puts self
    打印出main,这个代表Object的默认对象main.
    二、在class或module的定义中:
    在class和module的定义中,self代表这个class或这module对象:
    Ruby代码
    class S
    puts 'Just started class S'
    puts self
    module M
    puts 'Nested module S::M'
    puts self
    end
    puts 'Back in the outer level of S'
    puts self
    end
    输出结果:
    写道
    >ruby self1.rb
    Just started class S
    Nested module S::M
    S::M
    Back in the outer level of S
    >Exit code: 0
    三、在实例的方法定义中:
    这点和java的this代表的东东一样:程序自动传递的调用这个方法的对象
    Java代码
    class S
    def m
    puts 'Class S method m:'
    puts self
    end
    end
    s = S.new
    s.m
    运行结果:
    写道
    >ruby self2.rb
    Class S method m:
    #S:0x2835908>
    >Exit code: 0
    四、在单例方法或者类方法中:
    单例方法是针对一个对象添加的方法,只有这个对象拥有和访问这个方法,这时候self是拥有这个方法的对象:
    Ruby代码
    # self3.rb
    obj = Object.new
    def obj.show
    print 'I am an object: '
    puts "here's self inside a singleton method of mine:"
    puts self
    end
    obj.show
    print 'And inspecting obj from outside, '
    puts "to be sure it's the same object:"
    puts obj
    运行结果:
    写道
    ruby self3.rb
    I am an object: here's self inside a singleton method of mine:
    #Object:0x2835688>
    And inspecting obj from outside, to be sure it's the same object:
    #Object:0x2835688>
    >Exit code: 0
    在类方法中self代表这个类对象:
    Ruby代码
    # self4.rb
    class S
    def S.x
    puts "Class method of class S"
    puts self
    end
    end
    S.x
    运行结果:
    写道
    >ruby self4.rb
    Class method of class S
    >Exit code: 0
    从上面的例子我们可以看出不管是ruby的self还是java的this都表示在当前的环境下你可以访问的当前的或者默认的对象。
    您可能感兴趣的文章:
    • CentOS中配置Ruby on Rails环境
    • 在阿里云 (aliyun) 服务器上搭建Ruby On Rails环境
    上一篇:Ruby 魔法 学习笔记之一
    下一篇:ruby 程序的执行顺序
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Ruby self在不同环境的含义 Ruby,self,在,不同,环境,的,