赞 | 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,由于这是嵌套类,所以在外面不能直接调用,需要用符号::分隔各个嵌套的类完整地把各个类表示出来。
嵌套类与普通类的定义方法完全相同,但用法不同。
再举一个嵌套类的例子。- 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
复制代码 在Cake类中,输入- Cream_cake.new.give_me_a_cake
复制代码 可以直接转入class Cake中嵌套的class Cream_cake。但是在Cake类之外,就只能使用Cake::Cream_Cake或Cake::Water_Cake的形式访问class Cream_cake和Water_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帮助文档中找到。
这是其中的一段比较短的内容。- 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
复制代码 比如这一段脚本,想要调用其中的Troop中的initialize应该如何调用呢?
(这里当做一个考题留给楼主,楼主可以通过我前面给的例子找到答案)
好了,就讲到这里,希望能够帮助你理解吧。 |
|