Ruby的self在不同的环境中有不同的含义,这点和java的this不同,原因是java实际上只有一种环境--在class的实例方法定义中使用,代表访问这个方法参数自动传进的那个对象。而由于ruby作为一个完全纯净的面向对象语言,任何东东都是对象,方法是对象,类也是对象...,所以self就会有很多环境,区分不同环境的self含义才能更好的理解程序的含义
一、Top Level Context
puts self
打印出main,这个代表Object的默认对象main.
二、在class或module的定义中:
在class和module的定义中,self代表这个class或这module对象:
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
S
Nested module S::M
S::M
Back in the outer level of S
S
>Exit code: 0
三、在实例的方法定义中:
这点和java的this代表的东东一样:程序自动传递的调用这个方法的对象
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是拥有这个方法的对象:
# 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代表这个类对象:
# 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
S
>Exit code: 0
从上面的例子我们可以看出不管是ruby的self还是java的this都表示在当前的环境下你可以访问的当前的或者默认的对象。
以上来自http://rubylearning.com/satishtalim/ruby_self.html 的总结
分享到:
相关推荐
Ruby工具 windows 环境 Ruby 脚本 语言
Ruby集成开发环境,不用再在控制台上编写你的Ruby代码,方便书写提示和调试工作。
下面列出了在 Windows 机器上安装 Ruby 的步骤。 注意:在安装时,您可能有不同的可用版本。 Window 系统下,我们可以使用 RubyInstaller 来安装 Ruby 环境,下载地址为:请点击这里下载。 下载 ...
关于Ruby开发环境的配置的一个文档,帮助大家搭建ruby开发、rails开发的基础环境。
ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)
安装ruby环境(使用cocoaPods)的基本步骤
这个是ruby的集成开发环境,适合ruby新手直接上手使用进入编程;就是类似Microsoft Visual Studio 2010那样方便的ruby编程开发工具,关键词高亮、自动语法提示等等,使用起来比较方便。这是NetBeans的最后一个专门...
这个是ruby的集成开发环境,适合ruby新手直接上手使用进入编程;就是类似Microsoft Visual Studio 2010那样方便的ruby编程开发工具,关键词高亮、自动语法提示等等,使用起来比较方便。这是NetBeans的最后一个专门...
ruby gem环境,解压覆盖C:\Ruby193\lib\ruby\gems\1.9.1
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码
本文将着重介绍如何在不同的操作系统下搭建Ruby开发环境,同时,在最后会详细介绍如何在Windows操作系统下安装并配置MySQL数据库。
ruby 在 WINDOWS 下的开发环境工具 ,下载后点击运行后即可用CMD窗口操作RUBY命令了,我是用URTALEDIT 作编辑器的再执行的。
Eclipse搭建Ruby开发环境的搭建步骤
ruby安装包下载 | ruby环境搭建
介绍如何在不同的系统上搭建Ruby on Rails开发环境,简单明了,带图
windows版本ruby运行环境安装,下载后解压即可,直接双击运行
有些公司的服务器是不允许链接外网的,导致下载安装资源比较费劲。这里提供了ruby的两个安装包和redis的安装包。下载会快些
Windows上配置Ruby运行环境详解
ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...