Project1

标题: 请教个module和class问题 [打印本页]

作者: wwwcctvty    时间: 2013-10-16 19:01
标题: 请教个module和class问题
module和class的区别在哪?求指点、、、、{:2_263:}
作者: 美丽晨露    时间: 2013-10-16 19:08
module是模组,主要用于设置一个初始的参数
可以使用事件脚本修改内部的参数。
如:
module Image
Background = RPG::Cache.picture("background")

class是定义指定一个参数脚本的内容。
不能使用事件脚本修改内部的内容吧。

如:
class Image
  

  attr_accessor        :x                # X 坐标
  attr_accessor        :y                # Y 坐标
  #--------------------------------------------------------------------------
  # 初始化
  #--------------------------------------------------------------------------
  def initialize

我只能这样解释了
作者: 紫英晓狼1130    时间: 2013-10-16 19:20
module从英文名词解释就是模型、模块。详细解释如下,如果LZ有RUBY基础,看下面的应该不成问题
1. module没有实例变量,也不能生成实例对象;
2. Class的父类是Module;
3. 在类中include module,module中的方法会被添加到类的实例方法中
4. 在类中extend module,module中的方法会被添加到类方法中
5. module的一个常用的callback函数:included,会在该module被include到一个类中时被调用
class比较常见,在大多数脚本中也有。详细解释如下
1.类的实例变量一般以@开头,类变量一般以@@开头,都是封装在类内部
2.和其它的语言不同,ruby class中类层可以执行程序
作者: 芯☆淡茹水    时间: 2013-10-16 20:14
本帖最后由 芯☆淡茹水 于 2013-10-16 20:20 编辑

嗯哪,该问题只可意会;不可言传。
打一个不是很形象比喻呢,module 相当于 中央法律 ,规定一些总体的条条款款。class 相当于 地方法律 它再把这个 module(中央法律) 详细化。
各个地方的地方法律都各有不同,但都是基于 module(中央法律)为框架。
比如下面 2 个:
class Sprite_Battler < RPG::Sprite
class Sprite_Character < RPG::Sprite
作者: yagami    时间: 2013-10-16 21:09
本帖最后由 yagami 于 2013-10-16 21:13 编辑

其实没有模板module不影响你编程的 用全局变量 或函数能达到一样的目的 RUBY弱类型的 所以不像c++的模板那样起到泛型编程的效果
在我看来module唯一的作用 在 多人合作时  A定义了个全局变量 X并对其操作 B也定义了个全局变量X 也对其操作 这样 AB2人的工程合在一起 肯定有问题
这时如果 A建立个module A ,B建立个module B , A用A::x  B用B::x  虽然都是X 但不会出现上面那种耦合情况了 所以我觉得 他改成名词空间更合适点 namespace

作者: 芯☆淡茹水    时间: 2013-10-16 22:17
在地图上写菜单,仿照默认菜单场景和窗口来写,这些都是 class 。
你要的效果是不是菜单窗口以外的地方,用当前地图来做背景?
作者: 芯☆淡茹水    时间: 2013-10-16 22:28
那样的话只需要建你的菜单的一些窗口即可,之后加入到地图场景里。
先将菜单窗口设为不可见,按菜单键后设为可见状态,并定义一些选项
功能,那样就可以选择菜单,,,,额~~,那不是按方向键选择菜单
时,人物还可以到处乱走?!
作者: 晴兰    时间: 2013-11-20 20:52
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1