`

Ruby self在不同环境的含义

    博客分类:
  • Ruby
阅读更多

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 的总结

6
2
分享到:
评论
3 楼 rongge2 2010-04-27  
谢谢,非常不错 ,尤其是对 像我这样的初学者解惑不少
2 楼 orcl_zhang 2009-07-25  
真的很不错。
任何东东都是对象,按照这个思路来理解,self的用法就会比较明了。
受益了
1 楼 samsam 2008-12-25  
好文,总结的很好

相关推荐

    Ruby工具 windows 环境

    在Windows环境下设置和使用Ruby工具对于开发者来说是一项基础任务。本文将深入探讨Ruby在Windows平台上的安装、配置以及基本使用。 首先,让我们关注标题中的"Ruby工具 windows 环境"。在Windows上安装Ruby,你需要...

    ruby安装包下载 | ruby环境搭建

    为了在没有外网连接的环境中搭建Ruby环境,你需要提前下载并准备相关的安装包。在提供的压缩包中,包含了三个关键文件:`ruby-2.7.2.tar.gz`、`redis-6.0.9.tar.gz` 和 `rubygems-3.1.5.tgz`。接下来,我们将详细...

    Ruby语言的集成开发环境

    Ruby集成开发环境,不用再在控制台上编写你的Ruby代码,方便书写提示和调试工作。

    ruby _1.9.3 _gem环境

    这可以通过Ruby Installer(对于Windows用户)或使用像RVM(Ruby Version Manager)或rbenv(Ruby环境管理器)这样的工具完成,它们允许你轻松地切换和管理不同的Ruby版本。 2. 配置Gem源:默认情况下,Ruby会连接...

    成功搭建Ruby运行环境为您展开Ruby体验大门

    在学习 Ruby 语言时,首要任务就是搭建 Ruby 的运行环境。只有当运行环境搭建完成后,才能找到符合以往开发习惯的 IDE 工具、看一看入门的例子、学习语言相关的知识。搭建 Ruby 运行环境是学习 Ruby 的第一步骤。 ...

    Sass环境-Ruby2.6.5.zip

    下面列出了在 Windows 机器上安装 Ruby 的步骤。 注意:在安装时,您可能有不同的可用版本。 Window 系统下,我们可以使用 RubyInstaller 来安装 Ruby 环境,下载地址为:请点击这里下载。 下载 ...

    怎样在Ubuntu系统下配置Ruby On Rails开发环境.docx

    在使用前需先配置 Ruby On Rails 的开发环境,本文将介绍如何在 Ubuntu 12.04 系统下配置 Ruby On Rails 开发环境。 一、安装系统需要的包 在安装 Ruby On Rails 之前,需要安装一些必要的包,包括 build-...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在这个开发环境包中,我们拥有Ruby 1.8.7版本和Rails 2.2.3版本,这两个组件构成了一个经典的开发组合。 Ruby 1.8.7是Ruby编程语言的一个早期稳定版本,发布于2010年,提供了许多改进和新特性。在Ruby 1.8.x系列中...

    Windows上配置Ruby运行环境详解

    在Windows操作系统上配置Ruby运行环境是一项重要的步骤,尤其对于开发者来说,这将使得你能够运行Ruby程序和使用相关的开发工具。Ruby是一种动态、面向对象的脚本语言,它以其简洁的语法和强大的元编程能力而受到...

    ruby安装包下载 - ruby环境搭建

    在本主题中,我们将深入探讨如何下载Ruby安装包并搭建Ruby环境,以及它与Redis的关系。 首先,让我们来了解如何下载和安装Ruby。Ruby的官方下载页面提供了适用于不同操作系统的安装包,包括Windows、Mac OS X和...

    Ruby-rubybuild编译和安装Ruby

    在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build`来编译和安装Ruby。 `rbenv`是一个用于管理全局或用户级别的Ruby版本的工具,它...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    在Ruby的世界里,管理不同的Ruby实现(如MRI、JRuby、Rubinius、MagLev和MRuby)是非常重要的,这有助于开发者根据项目需求选择最适合的运行时环境。`ruby-install`就是这样一个工具,它允许用户方便地安装和管理...

    Windows下RDT+Eclipse搭建 ruby开发环境配置

    在Windows环境下,搭建Ruby开发环境是一项基础而重要的工作,它涉及到多个步骤,包括安装必要的软件、配置环境变量以及集成开发工具的设置。本教程将详细讲解如何使用RDT(Ruby Development Tools)与Eclipse来创建...

    Ruby-dotenv从env加载环境变量

    在Ruby应用程序中,我们经常需要设置环境变量来控制不同环境(如开发、测试和生产)的行为。这些变量可能包括数据库连接字符串、API密钥或服务端点。将这些信息硬编码到代码中是不安全的,因为它们可能会无意中被...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    ruby免费ide集成开发环境netbeans-6.9.1第二个压缩包

    这个是ruby的集成开发环境,适合ruby新手直接上手使用进入编程;就是类似Microsoft Visual Studio 2010那样方便的ruby编程开发工具,关键词高亮、自动语法提示等等,使用起来比较方便。这是NetBeans的最后一个专门...

    搭建Ruby on Rails开发环境

    在Windows系统上搭建RoR开发环境,首先要下载并安装Ruby的一键安装包。你可以从RubyForge网站获取最新版本的Ruby Installer,如Ruby 1.8.4-16。安装过程非常简单,只需按照向导一步步操作,安装完成后通过命令行窗口...

    ruby gem环境

    Ruby Gem环境是Ruby编程语言中的一个关键组成部分,它是一个包管理器,负责安装、管理和使用Ruby库,也就是所谓的Gems。在Ruby世界中, Gems不仅仅是代码库,它们包含了执行脚本、元数据以及用于安装和运行时的依赖...

Global site tag (gtag.js) - Google Analytics