查看: 2245|回复: 5

[已经解决] 如何在函数名中加入变量?

[复制链接]
梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
回帖
193
发表于 2015-2-28 22:10:42 | 显示全部楼层 |阅读模式

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

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

×
以应对这样的问题
QQ截图20150228221140.png
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2015-2-28 22:32:36 | 显示全部楼层
  1. def on_item_ok(id)
  2.   create_command(id)
  3.   @commadn.uppos(#........
  4.   #.......
  5. end
复制代码
回复

使用道具 举报

梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
回帖
193
 楼主| 发表于 2015-2-28 22:35:00 | 显示全部楼层
VIPArcher 发表于 2015-2-28 22:32

这样子在 method(:?)里就不能调用这些函数了。。
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此
回复

使用道具 举报

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

开拓者短篇九导演组冠军

发表于 2015-2-28 23:31:03 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-2-28 23:36 编辑

两种思路,第一种,不使用 method 而是使用 Proc 闭包
  1. xxxx.set_handler( :new_game, Proc.new{ on_item_ok(参数) } )
复制代码
第二种,define_method
  1. class Scene_XXX
  2.   4.times do |i|
  3.     define_method "on_item_ok#{i}" do      
  4.       create_command(i)
  5.       XXXX
  6.     end
  7.   end
  8. end
复制代码
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-3-1 07:51:16 | 显示全部楼层
比起楼上两种我还是给出朴素一些的做法吧。

[pre lang="ruby"]class Scene_XXX
  def on_item_ok(id)
    create_command(id)
    @commadn.uppos(#........
    #.......
  end

  def on_item_ok1; on_item_ok 1; end
  def on_item_ok2; on_item_ok 2; end
  # ...
   
end[/pre]

or

[pre lang="ruby"]class Scene_XXX
  def on_item_ok
    create_command(@some_window.index)
    @commadn.uppos(#........
    #.......
  end
end[/pre]

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2015-3-1 10:38:32 | 显示全部楼层
我认为……他存在的问题应该是:怎么会有这么多的on_item_ok?我用的是通过current_symbol来确认指向的是哪个选项,这样就可以使用像2楼那样的方法了,也省下了on_item_ok_id这样的函数命名,只要1个按下ok确认的方法就可以了(当然,提前在选项那里做好add_command(test, handle))。

点评

嗯,一般用 index,或者 current_ext 之类的来确定  发表于 2015-3-15 09:29
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部