|
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,,可是我总没法理解是什么…… |
|