| 
 
| 赞 | 0 |  
| VIP | 1 |  
| 好人卡 | 0 |  
| 积分 | 1 |  
| 经验 | 1773 |  
| 最后登录 | 2014-4-18 |  
| 在线时间 | 8 小时 |  
 Lv1.梦旅人 ℃ake
	梦石0 星屑50 在线时间8 小时注册时间2009-6-6帖子787 | 
| 本帖最后由 奶油Da蛋糕 于 2009-11-7 09:12 编辑 
 这个符号可以用来调用某个类中的嵌套(nested)类。嵌套类的定义:可以把类放入其它的类之中。如果某个类依赖于其他类,而这些其它类仅在此处有用,在其它地方无用,在这样的情况下,可以使用嵌套类。
 
 举个简单的例子。
 这样的话你输入试试效果?复制代码class ABC
class DEF
def self.G
return 'a'
end
end
end
如果窗口中弹出了"a",那么恭喜你!
 
 其中的符号::就是调用了class ABC中的class DEF,由于这是嵌套类,所以在外面不能直接调用,需要用符号::分隔各个嵌套的类完整地把各个类表示出来。
 
 嵌套类与普通类的定义方法完全相同,但用法不同。
 再举一个嵌套类的例子。
 在Cake类中,输入复制代码class Cake
def self.give_me_a_cake
Cream_cake.new.give_me_a_cake
end
class Cream_cake
def give_me_a_cake
print "This is a cream cake"
end
end
class Water_cake
def give_me_a_cake
print "This is a water cake"
end
end
end
可以直接转入class Cake中嵌套的class Cream_cake。但是在Cake类之外,就只能使用Cake::Cream_Cake或Cake::Water_Cake的形式访问class Cream_cake和Water_cake。复制代码Cream_cake.new.give_me_a_cake
如:
 好了,再回到楼主所说的问题。复制代码Cake.give_me_a_cake
#=>"This is a cream cake"
Cream_cake.new.give_me_a_cake
#=>NameError
Cake::Cream_cake.new.give_me_a_cake
#=>"This is a cream cake"
Cake::Water_cake.new.give_me_a_cake
#=>"This is a water cake"
楼主所说的RPG::sth.中的RPG是RGSS中的一个内部模块(module)与例子中的class有细微的区别(由于楼主的问题并不是module和class的区别,这里不详细介绍,楼主暂时把module当作一个没有initialize的特殊class就可以了)。
 
 module RPG中的内容可以在F1帮助文档中找到。
 
 这是其中的一段比较短的内容。
 比如这一段脚本,想要调用其中的Troop中的initialize应该如何调用呢?复制代码module RPG
  class Troop
    def initialize
      @id = 0
      @name = ""
      @members = []
      @pages = [RPG::BattleEventPage.new]
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :members
    attr_accessor :pages
  end
end
(这里当做一个考题留给楼主,楼主可以通过我前面给的例子找到答案)
 
 好了,就讲到这里,希望能够帮助你理解吧。
 | 
 |