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

Project1

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

[讨论] 把窗口存进数组里

[复制链接]

Lv2.观梦者

梦石
0
星屑
635
在线时间
244 小时
注册时间
2010-9-9
帖子
472
1
发表于 2020-2-28 11:23:23 | 显示全部楼层
本帖最后由 EngShun 于 2020-2-28 11:31 编辑

为什么大家都不用插入代码? _(:з」∠)_
这里来玩点不太黑的黑科技
  1. class StdObj < Hash
  2.   def method_missing(method, *args, &block)
  3.     if block
  4.         self.define_singleton_method method, &block
  5.     elsif(method.to_s[/([^\=]+)\=$/])
  6.         self[$1.to_sym] = args[0]
  7.     else
  8.         return self[method]
  9.     end
  10.   end
  11. end
  12. # ============== 我是华丽分割线 ==============
  13. @windows = StdClass.new

  14. @windows.command = Window_Command.new
  15. @windows.status = Window_MenuStatus.new

  16. @windows.dispose do
  17.   self.values.each {|w|w.dispose}
  18. end
复制代码

丢进数组其实不是很必要,毕竟效率低了 _(:з」∠)_

点评

@guoxiaomi 我不太记得xp的ruby版本了,反正那个定义函数的函数也不是那么重要就是了 \_(:з」∠)_  发表于 2020-2-29 00:02
xp里没有define_singleton_method,所以第4行会触发method_missing无限递归hhh  发表于 2020-2-28 17:03
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
635
在线时间
244 小时
注册时间
2010-9-9
帖子
472
2
发表于 2020-2-29 16:56:05 | 显示全部楼层
轩辕合流 发表于 2020-2-29 09:55
请教一下 def method_missing(method, *args, &block)  的 * 和 & 什么意思


* 在参数内代表把后续的所有参数都放进一个数组,所以这里的 *args 代表了把 method 之后的所有参数都当成名为args的参数
运行一下下面的脚本你就会知道差别了
  1. def test1(*args)
  2.   p args
  3. end
  4. def test2(a, *b)
  5.   p a
  6.   p b
  7. end

  8. test1 1, 2, 3
  9. test2 1, 2, 3
复制代码

这里温馨提醒一下学脚本最有效的方法还是直接写了运行看看

而&block就比较不好解释了,所以我懒得解释 _(:з」∠)_
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-8 14:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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