幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1286|回复: 6

[RMVX] [求助]module的问题

[复制链接]

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2007-5-7 13:53:47 | 显示全部楼层 |阅读模式
module RPG
  class Armor
    def name
      name = @name.split(/@/)[0]
      return name != nil ? name : ''
    end
    def kind
      kind  = @name.split(/@/)[1]
      return kind  != nil ? kind.to_i : @kind
    end
  end
end

这是添加装备栏的脚本game_actor里加的一段

module怎么用呢?

Module
模块的类。

父类Object
方法self === obj
该方法主要用在 case 语句的比较中。若 obj 与 self 之间存在 Object#kind_of? 关系时就为真。也就是说,在 case 中检查类、模块的所属关系。

str = String.new
case str
when String     # 计算 String === str
  p true        # => true
end

私有方法attr_accessor(name ... )
为 name 属性定义读取和写入的方法。name 可以是 Symbol 或字符串。

以此方法定义的方法的定义如下。

def name
  @name
end
def name=(val)
  @name = val
end

attr_reader(name ... )
定义 name 属性的读取方法。name 可以是 Symbol 或字符串。

以此方法定义的方法的定义如下。

def name
  @name
end

attr_writer(name ... )
定义 name 属性的写入方法(name=)。name 可以是 Symbol 或字符串。

以此方法定义的方法的定义如下。

def name=(val)
  @name = val
end

include(module ... )
对指定模块的性质(方法或常数)进行添加。返回 self。include 正是为实现 Mix-in(糅合)功能而设计的,而 Mix-in 取代了多重继承。

class C
  include FileTest
  include Math
end

添加模块功能时,先要突破类的继承关系,而后插入模块就可以实现功能的扩展。所以在搜索方法等过程中,首先要搜索添加的模块,然后才搜索父类。

若多次 include 同一个模块时,则只有首次 include 是有效的。若 include 引起模块间的循环继承时,将引发 ArgumentError 异常。


这是F1,,可是我总没法理解是什么……
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-5-7 13:55:38 | 显示全部楼层
这个东西是怎么调用的? [s:5]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

89

主题

2333

帖子

3273万

积分

⑧专业

Xavier on Rails

积分
32739794
QQ
发表于 2007-5-7 14:18:34 | 显示全部楼层
使用上和类没什么区别
镐头书中文第二版117页上的一句话
"不过,有时你想要把那些无法自然构成类的部分集合到一起"
补充下一句的话就是:这时候你就要使用模块了
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-5-7 15:00:48 | 显示全部楼层
似乎是懂了% [s:7] 在思考思考


谢谢 [s:7]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

90

主题

785

帖子

1278万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
12786515
QQ
发表于 2007-5-7 15:26:42 | 显示全部楼层
可以定義新的東西,
或者你在ClassArmor列表那裏附加一個熟練度也行,
具體要怎麽做還請LZ思考。
回复 支持 反对

使用道具 举报

89

主题

2333

帖子

3273万

积分

⑧专业

Xavier on Rails

积分
32739794
QQ
发表于 2007-5-7 15:40:14 | 显示全部楼层
比如说你的游戏中有很多功能,你把他们定义在不同的类里
但是这些功能都需要一个相同的东西。如果你把他们都需要的那个定义成一个类然后让所有需要他的类都继承他的话,似乎很麻烦,也不好管理,而且容易出错
这时候只需要把相同的那个东西定义到一个模块里
然后用require关键字和include关键字把他mix-in进需要他的类就好多了 [s:5]
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-5-7 17:15:14 | 显示全部楼层
哦  哦   ,,那我就明白很多了,,谢谢 [s:7]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-23 13:03 , Processed in 0.012131 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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