文章列表
http://blog.jiaeil.com/noteit/2010/05/16/digging-ruby-instance_eval-and-class_eval/
1.语言中变量的实质
要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧!
先来理解理解内存空间吧!请看下图:
内存地址→ 6 7 8 9 10 11 12 13
-----------------------------------------------------------------
。。。 | | | | | | | |.。
------------------------------- ---------------------------- ...
@shared = 100
class MyClass
class << self
attr_accessor :shared
end
end
class MyClass_2 < MyClass
@shared = 500
end
p MyClass.shared ---> nil
MyClass.shared = 1
p MyClass.shared ----> 1
p MyClass_2.shared ---> 500
首先在Object类中定义了一个实例变量shared,而访问MyClass.shared的时候发 ...
一直以来感觉require和include总是name的难以理解,趁着今天有时间好好的理顺了一番
ruby中在一个model中不可以引用另外一个model,我们可以通过使用require,引入一个新
的model,然后通过操作这个model的其他方法实现我们想要实现的东西。对于include其实我
感觉有点继承的味道,一般要先把某个类引入进来,也就是说require 'xxoo.rb'然后在
include Module1,注意include后面一定是不能带引号的.对于include进来的Module,我们可以
直接使用其方法
include将命名空间(模块)的功能添加到当前空间中,exten ...
class [scope::] classname[<superexpr]
body
end
class<<obj
body
end
Ruby中类定义通过执行类代码体创建或者扩展Class的对象。
在第一种形式中,一个命名类将被创建或者被扩展。生成的Class对象被赋值给名为classname的常量。这个名字应该以一个大写字母打头。在第二种形式中,一个匿名单例类会和指定的对象相关联。
在方法体内,随着定义代码的读入,大多数的Ruby表达式将被执行,然而:
方法定义将在类的对象的一个表中注册该方法。
嵌套的类和模块定义将被存储在类的常量中,而不是全局常量中。在定义嵌套的类或者模块 ...
ruby的变量和常量含有对象的引用。变量本身没有内在的类型。变量的类型仅仅由变量引用的对象所能响应的消息决定。
ruby中常量也是对对象的引用。常量在第一次被赋值的时候创建,和别的语言不同,ruby允许你改变常量的值。
OUTER_CONST = 99
class Const
def get_const
p "-ssssssssssssssssss---"
CONST
end
p "------------------"
CONST = OUTER_CONST + 1
end
p Const.new.get_const
p Const::CONST
p ...
在表达式中,当ruby看到象a这样子的名字,它就需要判断a是一个全局变量引用还是一个对没有参数的方法a的调用。ruby中使用了一种启发式的方法来判断这种情况。当ruby解析源代码文件时,它会记录所有已经被复制的符号,它认为这些符号式变量,如果没有记录,则认为是方法。
def a
print "Function 'a'"
99
end
for i in 1..2
if i == 2
print "a=", a, "\n"
else
a = 1
print "a=", a, "\n"
end
end
...