设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1731|回复: 11
打印 上一主题 下一主题

[有事请教] 这是我代码写错了还是?

[复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23289
在线时间
2391 小时
注册时间
2005-10-15
帖子
1167

开拓者

跳转到指定楼层
1
发表于 2017-12-2 23:28:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
不想连写20条重复的内容,想把1简化成2,结果死活通不过……

是xp ruby版本太低了还是我写错了……

RUBY 代码复制
  1. #==============================================================================[/font]
  2. [font=&quot]# ■ Vocab[/font]
  3. [font=&quot]#------------------------------------------------------------------------------[/font]
  4. [font=&quot]# 所有用语的整合模块。[/font]
  5. [font=&quot]#==============================================================================[/font]
  6. [font=&quot]module Vocab[/font]
  7. [font=&quot]#--------------------------------------------------------------------------[/font]
  8. [font=&quot]# ● 导入已经在数据库里定义的术语[/font]
  9. [font=&quot]#--------------------------------------------------------------------------[/font]
  10. [font=&quot]def self.gold; $data_system.words.gold; end[/font]
  11. def self.hp; $data_system.words.hp; end
  12. def self.sp; $data_system.words.sp; end
  13. ....
  14. [font=&quot]end


RUBY 代码复制
  1. #==============================================================================
  2. # ■ Vocab
  3. #------------------------------------------------------------------------------
  4. #   所有用语的整合模块。
  5. #==============================================================================
  6. module Vocab
  7.   #--------------------------------------------------------------------------
  8.   # ● 导入已经在数据库里定义的术语
  9.   #--------------------------------------------------------------------------
  10.   def self.words(sym);    $data_system.words.send(sym);                   end
  11.   [:gold, :hp, :sp, :str, :dex, :agi, :int, :atk, :pdef, :mdef,
  12.     :weapon, :armor1, :armor2, :armor3, :armor4,
  13.     :attack, :skill, :defend, :item, :equip].each do |sym|
  14.     self.send :define_method, sym {words(sym)}
  15.   end
  16. end

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2017-12-2 23:48:20 | 只看该作者
本帖最后由 chd114 于 2017-12-2 23:49 编辑
  1. %w(gold hp mp str dex).each do |type| eval %{
  2. def self.#{type}; $data_system.words.#{type};}end
复制代码

这样如何···

点评

不知道···不过你send(sym)的话进去的内容好像是:gold吧···把读取出来的:gold的:去掉也试过了吗?我觉得去掉的话应该可以  发表于 2017-12-3 00:37
↓这怎么能用Method_missing...  发表于 2017-12-3 00:34
method_missing?  发表于 2017-12-3 00:10
难道除了Eval大法之外就毫无办法了么……  发表于 2017-12-3 00:02
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

3
发表于 2017-12-3 00:56:33 | 只看该作者
本帖最后由 SixRC 于 2017-12-3 01:02 编辑

十四行 {} 改成 do ... end 就可以的
或者用括号把 sym 括起来
原因应该是 方法的优先度高于变量..不加括号解释器认为 sym 是方法

点评

原来如此  发表于 2017-12-3 12:00
变量的优先度高于方法,但后面跟个 { } 就不一样了  发表于 2017-12-3 09:00

评分

参与人数 1+1 收起 理由
SailCat + 1 {}和do end居然不一样……

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

4
发表于 2017-12-3 01:07:08 | 只看该作者
本帖最后由 RaidenInfinity 于 2017-12-3 01:08 编辑

以下代码于Steam正版RMXP空工程内测试可用(包括实际调用):
RUBY 代码复制
  1. module Vocab
  2.   class << self
  3.     WORD_SYM =   [:gold, :hp, :sp, :str, :dex, :agi, :int, :atk, :pdef, :mdef,
  4.                   :weapon, :armor1, :armor2, :armor3, :armor4,
  5.                   :attack, :skill, :guard, :item, :equip]
  6.  
  7.     WORD_SYM.each do |sym|
  8.       target = RPG::System::Words.instance_method(sym)
  9.       define_method(sym) do
  10.         target.bind($data_system.words).call
  11.       end
  12.     end  
  13.   end  
  14. end

点评

Steam英文正版的RGSS104E.dll,p RUBY_VERSION 输出的是 "1.8.1"。  发表于 2017-12-3 01:21
这……RMXP1.05莫非是ruby 1.8.6了……  发表于 2017-12-3 01:17

评分

参与人数 1+1 收起 理由
SailCat + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-8 01:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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