`
yy77
  • 浏览: 8339 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类

解释为什么Ruby nil.object_id等于4 。(真正要考察地是C)

阅读更多
  
> > nil.object_id   
= > 4   

原因是因为nil是一个固定的object,在如下在$rubyhome\lib\1.8\i386-mswin32中的ruby.h头文件里面有如下特殊对象的构造。
/* special contants - i.e. non-zero and non-fixnum constants */
#define Qfalse ((VALUE)0)
#define Qtrue  ((VALUE)2)
#define Qnil   ((VALUE)4)
#define Qundef ((VALUE)6)	/* undefined value for placeholder */


在rails的activesupport里面,也有一个whiny_nil.rb的类有些相关的说明。
6
3
分享到:
评论

相关推荐

    Map_Set.zip_C Map_C语言map_map.c

    这里提到的"Map_Set.zip_C Map_C语言map_map.c"文件包含了一个使用红黑树(Red-Black Tree)实现的C语言版本的map和set操作。 **红黑树**是一种自平衡二叉查找树,它的每个节点都带有颜色属性,可以是红色或黑色。...

    to_nil:to_nil 宝石

    安装将此行添加到应用程序的 Gemfile 中: gem 'mr_to_nil' 然后执行: $ bundle或者自己安装: $ gem install mr_to_nil用法 [ :random , :array ] . to_nil # nil31337 . to_nil # nil"Yet another shitty gem" . ...

    object_c开发书籍

    Objective-C,简称为ObjC,是一种面向对象的编程语言,主要应用于Apple的iOS和macOS操作系统,用于构建iPhone、iPad以及Mac应用。本书籍“Object_C开发书籍”旨在帮助开发者深入理解和熟练掌握Objective-C,从而在...

    简析xml.rar_delphi 创建 xml_site:www.pudn.com_xml_xml delphi

    XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,它以其结构化、自解释性和可扩展性而被广泛应用于软件开发中,尤其是Delphi这样的编程环境中。Delphi提供了强大的XML处理能力,使得开发者...

    Anil.zip_matlab例程_matlab_

    标题中的"Anil.zip_matlab例程_matlab_"暗示了这是一个与MATLAB编程相关的压缩文件,其中可能包含一系列示例代码或程序,用于演示如何在MATLAB环境中进行图像处理,特别是"Embedding image in image"这个描述,指出...

    nil_value_error解决办法.md

    nil_value_error解决办法.md

    KVO-KVC.zip_DEMO_kvo demo

    **KVO(Key-Value Observing)与KVC(Key-Value Coding)是Objective-C中的两种重要编程概念,主要用于对象属性的监听与间接访问。在这个DEMO中,我们将深入探讨这两种技术的工作原理、应用场景以及如何在实践中使用...

    Ruby的25个编程细节(技巧、实用代码段)

    在Ruby中,`try` 方法是一个非常有用的功能,它允许我们安全地访问对象的方法或属性,即使该对象为 `nil` 也不会抛出异常。相反,如果没有找到对象或者对象为 `nil`,`try` 会返回 `nil`。 **示例代码:** ```ruby ...

    article4.zip_delphi XML_in_xml

    TXMLDocument是基于MSXML或XML4P的组件,用于读取、写入和操作XML文档,而TXMLEncoder则负责将Delphi对象编码为XML格式。 首先,让我们了解如何解析XML文档。在Delphi中,你可以创建一个TXMLDocument实例,然后加载...

    06Ruby 方法.docx

    ### Ruby 方法详解 #### Ruby 语言简介 Ruby 是一种动态、面向对象的脚本语言,以其简洁、清晰的语法著称。它支持多种编程范式,包括面向对象、命令式和函数式编程,并且拥有强大的元编程能力。Ruby 的设计哲学强调...

    boolean2:Boolean2 是一个 Ruby 常量,它是 true 和 false 的祖先

    下次要定义全局Boolean类之前,请考虑改用这种基本方法。 设置 添加到您的Gemfile : gem 'boolean2' 用法 true . is_a? Boolean2 #=> true false . is_a? Boolean2 #=> true nil . is_a? Boolean2 #=> false ...

    SpeechLib_TLB.zip_SpeechLib_SpeechLib_TLB_delphi SAPI_in

    它包括语音识别和文本转语音(TTS)功能,为开发者提供了丰富的语音技术工具集。在Delphi中,我们可以通过导入SAPI的类型库(TLB)来访问这些功能,`SpeechLib`就是这样一个库,它包含了与SAPI交互所需的所有类型和...

    Ruby语言入门教程&代码示例.pdf

    ### Ruby语言基础知识与示例详解 #### 一、Ruby简介 Ruby是一种面向对象的脚本语言,具有简单、高效的特点。它由日本人松本行弘(Yukihiro Matsumoto)于1995年设计并发布。Ruby的设计哲学强调程序员的生产力和...

    Editor-HTML.zip_delphi HTML_delphi webbrowser_edit_editor_html_e

    Range.execCommand('Bold', False, nil); end; end; ``` 此外,实现下载HTML内容的功能,我们可以监听保存按钮的点击事件,获取WebBrowser组件中的HTML源代码,并使用TSaveDialog组件让用户选择保存路径和文件名...

    cocos2dx_LUA_RichLabel

    RichLabel._fontName = nil RichLabel._fontSize = nil RichLabel._fontColor = nil RichLabel._containLayer = nil --装载layer RichLabel._dimensions = nil RichLabel._spriteArray = {} --精灵数组 RichLabel._...

    oc.zip_NSArray_NSDictionary_去空

    本文将详细讲解如何在Objective-C中有效地去除`NSArray`和`NSDictionary`中的空数据。 首先,让我们关注`NSArray`。`NSArray`是不可变的,意味着一旦创建,其内容就不能改变。因此,要去除其中的空值,我们需要创建...

    red-black-tree-c.rar_red black tree_tree c语言

    在C语言中实现红黑树,需要理解其核心性质并能有效地编写代码来维护这些性质。 红黑树的性质如下: 1. 每个节点不是红色就是黑色。 2. 根节点是黑色。 3. 所有叶子节点(NIL或空节点)都是黑色。 4. 如果一个节点...

    ruby-2.3.7.tar.gz

    2. **Safe Navigation Operator(安全导航运算符)**: `&.` 可以防止在访问可能为 `nil` 的对象的方法时引发 `NoMethodError`。 3. **Proc#lambda?** 和 **Proc#to_proc** 的区分:`Proc.new` 创建的 Proc 对象默认...

    nil_or:执行除非 Nil

    将方法委托给目标,除非为零。 安装 将此行添加到应用程序的 Gemfile 中: gem 'nil_or' 然后执行: $ bundle 或者自己安装: $ gem install nil_or 用法 我什么时候需要它? 而不是写: date_of_birth = ...

    WMI.rar_delphi wmi_wmi_wmi delphi

    例如,要获取计算机的基本信息,我们可以创建一个`TManagementScope`对象,设置其Scope属性为根命名空间(`\root\CIMV2`),然后使用`TManagementObjectSearcher`查询特定的WMI类(如`Win32_OperatingSystem`)。...

Global site tag (gtag.js) - Google Analytics