CharlesCui 发表于 2013-1-27 04:46:50

RUBY的变量,看我理解的对不对

module DMdef self.included(c)    puts c.class    c.extend MMenddef set(a)    @a=aendmodule MM    def set(a)      @abc=a    end      def get      @abc    endendend


class TT   Abc=123include DMdef self.setUrl(a)    @baseUrl=aend    def self.getUrl    @baseUrlenddef getUrl    @baseUrlenddef setUrl(a)    @baseUrl=aendend
当TT extend了MM之后,MM中的不是self开头的方法中的@开头的变量,就变成了TT这个类的实例变量,相当于在TT的代码里加入了self.{MM的所有方法}。
由于TT同时也include了DM,但DM中的方法中的@开头的变量不是TT的类实例变量,而是TT的实例的实例变量,这个好理解。

继续:

类的实例方法中定义的或者说因引用而动态定义的@开头的变量,是实例变量!但是,类的self.开头的类方法中定义的@开头的变量是类实例变量!名称即便相同,但作用域不同所以完全不同。

我自己晕了,不知道哪里有ruby的清晰的继承关系的一个图,而且很想打开TT的singleton和TT的实例的singleton看一下,看看里面到底有什么!!请教打开看一下的方法,不是打开的方法。
页: [1]
查看完整版本: RUBY的变量,看我理解的对不对