六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 94|回复: 0

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

[复制链接]

升级  41.33%

98

主题

98

主题

98

主题

举人

Rank: 3Rank: 3

积分
324
 楼主| 发表于 2013-1-27 04:46:50 | 显示全部楼层 |阅读模式
module DM  def self.included(c)    puts c.class    c.extend MM  end  def set(a)    @a=a  end  module MM    def set(a)      @abc=a    end        def get      @abc    end  endend


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

继续:

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

我自己晕了,不知道哪里有ruby的清晰的继承关系的一个图,而且很想打开TT的singleton和TT的实例的singleton看一下,看看里面到底有什么!!请教打开看一下的方法,不是打开的方法。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表