`
cxh116
  • 浏览: 76794 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Ruby语法的一个绕口令(进来挑战下)

阅读更多
学习用class << Object 这种方式定义类方法的时候,发现Ruby语法的绕口令,很好玩的.

class Kitty
  class << self
    puts "#{self.inspect} -- #{self.object_id}"  #a点

    def hello
      puts "#{self.inspect} -- #{self.object_id}"  #b点
      puts "#{Kitty.inspect} -- #{Kitty.object_id}"  #c点
    end
  end
end
Kitty.hello

为什么答案b点与c点打印出来的结果是相同的,而a点又不同?

为了解题理清思路,我给出的代码如下.
class Hello
  puts "#{self.inspect} -- #{self.object_id}" #1处
  puts "#{Hello.inspect} -- #{Hello.object_id}" #2处

  def kitty
    puts "#{self.inspect} -- #{self.object_id}" #3处
    
  end
end
Hello.new.kitty

1处和2处结果相同,3处不同.

通过第二段代码来解释第一段代码.
a点的self指向名为Kitty的实例所属的类的类实例
b,c的self的指向的名为Kitty的实例
简单点来说,Kitty是一个实例名,可以通过class << Kitty 这种语法打开这个实例的Class
够绕吧...

分享到:
评论
3 楼 Caedmon 2011-05-18  
精华帖 - -,
2 楼 highsense 2011-05-06  
哥哥,你会被投新手帖的。
1 楼 cxh116 2011-04-29  
准备的来说  a点的self是一个eigenclass,在<Ruby编程语言>(此书有PDF下载)中的257页,有详细的说到了eigenclass

在class << self 这种语法,定义的单键方法,而非实例方法.
  我上面打开class说话有点错误
p Kitty.singleton_methods  # > [:hello]

相关推荐

    ruby语法基础教程

    - **使用交互式Ruby shell(irb)**:`irb`是一个内置的命令行工具,用于即时测试代码片段和学习Ruby语法。 ### 更深入的学习 随着你对Ruby的理解加深,你将探索更多概念,如类、模块、方法、继承、 Mixins、异常...

    ruby语法自整理

    Ruby是一种动态类型的编程语言,以其简洁的语法和强大的功能而受到开发者喜爱。下面是对Ruby语法的详细解析: 1. 变量与常量 - 局部变量:以小写字母或下划线开头,如`var`或`_var`。 - 全局变量:以美元符号`$`...

    ruby语法

    Ruby是一种面向对象的脚本语言,它以其简洁、优雅的语法和强大的元编程能力而闻名。在Ruby中,一切皆为对象,这使得它在处理复杂逻辑时具有很高的灵活性。这篇博文链接()可能详细解释了Ruby的基本语法和特性,但...

    09Ruby 语法.docx

    - **Ruby on Rails**:一个基于 Ruby 的 MVC(模型-视图-控制器)架构的 Web 开发框架,极大地简化了 Web 应用的开发过程。 - **动态特性**:Ruby 支持动态类型和动态绑定,这使得其在运行时能够灵活地改变行为。 - ...

    Ruby语言教程对Ruby语法的总结展示Ruby语法的基本概念和用法.docx

    ### Ruby语言教程对Ruby语法的总结 #### 一、变量与数据类型 **特点:** - **动态类型:** Ruby是一种动态类型的语言,这意味着你无需为变量声明具体的数据类型。 - **变量命名规则:** 变量名必须以小写字母或...

    ruby语法基础教程及Ruby教程中文版和安装文件

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程将深入探讨Ruby的基础语法,并介绍如何下载、安装Ruby,以及使用Ruby教程中文版进行学习。 首先,让我们从Ruby的...

    Ruby 基础语法 视频教程1

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称。这个"Ruby基础语法视频教程1"涵盖了几个关键的概念,包括变量、变量规则以及表达式。以下是对这些主题的详细解释: 1. 变量(Variables): 在Ruby中,...

    Prorammer ruby 语法截图

    Ruby是一种面向对象、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。在《Prorammer Ruby》一书中,作者深入浅出地介绍了Ruby的基础和高级概念,帮助开发者掌握这一强大工具。以下是一些从书中...

    前端学 Ruby:熟悉 Ruby 语法.pdf

    另外,Ruby 还提供了一个更高级的打印工具 `pp`,它可以以易于阅读的格式输出复杂的数据结构。 - **注释**:单行注释以 `#` 开头;多行注释则使用 `=begin` 和 `=end` 包围。 - **条件语句**:Ruby 的条件语句与...

    ruby语法基础教程.pdf

    - fxri是Ruby的一个文档查看工具,用于查阅Ruby标准库和第三方库的文档。 **2.3 Ruby-irb** - irb是Ruby的交互式解释器,可以在其中直接执行Ruby代码,非常适合调试和测试小段代码。 **2.4 Ruby-ri** - ri是Ruby...

    Ruby 语法. Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

    - **标准库**:Ruby 配备了一个丰富的标准库,提供了一系列功能强大的模块和类,涵盖了网络通信、文件处理、正则表达式等多种领域。 #### 三、Ruby 语言环境与安装 - **跨平台**:Ruby 可以在多种操作系统上运行,...

    Ruby-一个Ruby的例子

    例如,当你在Ruby中写下"hello",它实际上是一个String对象,你可以调用方法在它上面操作,如`"hello".upcase`会返回"HELLO"。 其次,Ruby的动态性允许你在运行时改变程序的行为。这意味着你可以自由地添加方法到类...

Global site tag (gtag.js) - Google Analytics