标题: 关于自定义模块的问题 [打印本页] 作者: hitlerson 时间: 2008-4-23 04:08 标题: 关于自定义模块的问题 module Work
class Work
def name
name = @work.split(/@/)[0] #0>名称
return name != nil ? name : ''
end
end
end
比如吧,我要做个任务的系统,存在一个数组里$TASK,$TASK[0] = 任务名,任务信息
那我要读取任务名就要写$TASK[0].split(/,/)[0]
任务列表,详细说明页面等等都要这么写很麻烦也不直观
想用一个def name 直接定义,以后只要$TASK.name 就好了作者: hitlerson 时间: 2008-4-23 04:49
module NUM
NUM = 10
end
常数的话不是能用这个来调用的吗? num = NUM::NUM
俺现在也只会定义几个常数
module RPG , class Item 看了F1说是内部定义的,我也想自己定义一个作者: 水迭澜 时间: 2008-4-23 04:52
……数组有spilt这个东西么……我记得是sting里的……蹲墙
拜托给出出错信息吧orz作者: hitlerson 时间: 2008-4-23 04:56
class Window_WorkList
def list
work = $WORK[1]
workname = work.name
p workname
end
end
module Work
class Work
def name
name = @work.split(/@/)[0] #0>名称
return name != nil ? name : ''
end
end
end
undefinde method 'name' for #<String:0x3e9e668>作者: 水迭澜 时间: 2008-4-23 04:57
@work没有初始化
另外array不能用spilt作者: 水迭澜 时间: 2008-4-23 05:07
你的@work没有初始定义
那个def name脚本没有出错的原因是它是在默认已经存在的脚本基础上追加的
你直接就新来个类,然后调用没有初始化的变量当然不行了……作者: hitlerson 时间: 2008-4-23 05:10
所以我想自己也写个,不知道怎么搞哈
看F1里面他是写成
module RPG
class Item
def initialize
@name = ""
end
attr_accessor :name
end
end
module Work
class Work
def initialize
@name = ""
end
attr_accessor :name
def name
name = @work.split(/@/)[0] #0>名称
return name != nil ? name : ''
end
end
end
class Window_WorkList
def list
work = $WORK[1]
workname = work.name
p workname
end
end
不过光这样还是行的吧?还要做点什么呢?还是提示name没有定义,怎么和work关联起来?作者: hitlerson 时间: 2009-6-12 08:00
数组每个值都是个字符串啊,所以我用SPLIT分割他
因为有这样的脚本
module RPG
class Item
def name
name = @name.split(/,/)[0]
return name != nil ? name : ""
end
end
end
class Window_ItemList
def list
item = $data_items[1]
itemname = item.name
p itemname
end
end