Ruby 常量作用域

特殊情况『1』

内部类不会自动引用其外部类的父类

# Info = "顶层info"

class Father
  Info = "父类Info"
  # puts Info
end

class Son < Father
  # Info = "子类Info"
  # puts Info

  class Inner
    # Info = "内部类Info"
    puts Info
  end
end
# puts Info
报错信息:
in `<class:Inner>‘: uninitialized constant Son::Inner::Info (NameError)

特殊情况『2』

对于内部类有继承其他类,优先使用外部类的资源。

Info = "Top Info"
class First
  Info = "First Info"
end

class Second
  Info = "Second Info"

  class Inner < First
    puts Info
  end
end
output:
Second Info

优先级关系

内部类自己 > 外部类 > 内部类的父类 > 外部类的父类 > 顶层

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 21:28:54

Ruby 常量作用域的相关文章

理解Ruby中的作用域

作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够,但在你看看完我的这篇文章后,相信你不会再担心会遇到这些头疼的问题. 什么是作用域? 当谈论到作用域的时候,应该马上想到变量和可见性这两个词,变量和可见性是作用域的主要内容,没错,作用域就是关于在代码的什么地方什么变量是可见的,当你充分了解了作用域后,给你一段代码,你可以轻易知道此时什么变量是可见的,

【转】Effective-Objective-C-读书笔记-Item-4-如何正确定义常量 -- 不错

原文网址:http://tutuge.me/2015/03/11/Effective-Objective-C-%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0-Item-4-%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E5%AE%9A%E4%B9%89%E5%B8%B8%E9%87%8F/ 前言 写博客果然比光看书要花时间=.=,书都快看完了,才写到第4节.但是总结一遍,的确印象深刻啊~~ 这次的主题是“常量”,非常常用,又非常重要的东西~良

#2.bool类型和 const

#2.bool类型和const类型 bool类型 const限定符 const与#define 结构体内存对齐 bool类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方式:   bool result; result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false const限定符 用const给字面常量起个名字

C++ Primer 学习笔记_15_从C到C++(1)--bool类型、const限定符、const与#define、结构体内存对齐

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢 一.bool类型(C语言没有) 1.逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 2.声明方式:bool result; result=true; 3.可以当作整数用(true一般为1,false为0) 4.把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false 5.示例 #include <iostream> using namespace

Clean Code 读书笔记九

要点汇总: 一般性问题 方法名称应该准确表达其具体行为 比如: Date newDate = date.add(5)//加5天?5个月? 最好使用addDaysTo 或increaseByDays 明确方法的行为. 使用多态 代替 switch或if else 比如: class RequestHandler { public void handleRequest(int action) { switch(action) { case LOGIN: doLogin(); break; case

从C到C++ (1)

从C到C++ 一. bool类型 bool取值false和true,是0和1的区别: false可以代表0,但true有很多种,并非只有1. 二. const限定符 常量在定义后就不能修改,所以定义时必须初始化. 在一个文件全局作用域中定义非const变量,在另外的文件中做extern声明,就可以使用这个变量.但是,对于一个文件全局作用域中定义的const变量,在另外的文件中做extern声明,是不能被访问的:                     //文件一 const int counte

跟我一起学C++之从C到C++(const与#define)

1.const定义的常量与#define定义的符号常量的区别 (1)const定义的常量有类型,而#define定义的没有类型,编译可以对前者进行类型安全检查,而后者仅仅只是做简单替换 (2)const定义的常量在编译时分配内存,而#define定义的常量是在预编译时进行替换,不分配内存. (3)作用域不同,const定义的常变量的作用域为该变量的作用域范围.而#define定义的常量作用域为它的定义点到程序结束,当然也可以在某个地方用#undef取消 2.定义常量还可以用enum,尽量用con

《Effective C++ 》学习笔记——条款02

****************************  一. Accustoming Yourself to C++ **************************** 条款02: Prefer consts,enums,and inlines to #defines 上一个条款,让我正确认识C++,并非是一个一体语言,而是一个联邦, 而这一个条款,是在纠正我们的一些行为习惯. 尽可能的用const.enum.inline 而非 #define 这个就要扯到 编译器 和 预处理器 的方

【Effective C++ 笔记】让自己习惯C++

最近在读 Effective C++,想要做点笔记,归类和书中的每个模块一样,但跟模块里的具体顺序可能不太一致.不会对书中每个细节都涉及,主要记下自己觉得重要的内容. What is C++? C++ 是一个多重范型编程语言( multiparadigm programming language),一个同时支持过程形式(procedural).面向对象形式(object-oriented).函数形式(functional).泛型形式(genetic).元编程形式(metaprogramming)