查看: 3280|回复: 2

[已经解决] 请问如何在方法的名称上决定好里面会使用的数据

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2017-12-11 15:44:35 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jianyulei 于 2017-12-11 15:45 编辑

例如脚本里面显示动画的方法:
[pre lang="ruby"]  def command_337
    iterate_enemy_index(@params[0]) do |enemy|
      enemy.animation_id = @params[1] if enemy.alive?
    end
  end
[/pre]
如果我要在脚本里调用这个方法的话需要写入  
@params[0]=0;@params[1]=2;command_337;
总觉得这样没有扩张性,请问可不可以在方法的名称上就决定好里面会使用的数据,然后根据这些数据来运行?就像写成 command_337[1,0,2] 这种格式就能直接用1 0 2这些数据来执行的感觉

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-12-11 21:04:44 | 显示全部楼层
未详细测试:

  1. class Game_Interpreter
  2.   alias m5_20171211_method_missing method_missing
  3.   def method_missing(m,*arg)
  4.     return m5_20171211_method_missing(m,*arg) unless m.match(/^m5com_(.*)/)
  5.     return ->(*arr){ @params = arr; send("command_#{$1}") }
  6.   end
  7. end
复制代码


插入脚本,然后

  1. m5com_337[1,0,2]
复制代码

点评

使用没有问题,但总觉得有种不妙的感觉,是我的错觉吗……  发表于 2017-12-13 12:28

评分

参与人数 1赞 +1 收起 理由
jianyulei + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部