Project1

标题: 坑死人不偿命的懒人脚本 [打印本页]

作者: 英顺的马甲    时间: 2013-12-12 16:29
标题: 坑死人不偿命的懒人脚本
本帖最后由 英顺的马甲 于 2013-12-12 16:33 编辑
  1. class LazyHash < Hash
  2.   alias orig_square [] unless defined?(orig_square)
  3.   def [](*args)
  4.     self[*args]= LazyHash.new if orig_square(*args).nil?
  5.     orig_square(*args)
  6.   end
  7.   def method_missing(meth,*args)
  8.     if /(.+?)=$/.match(meth.to_s)
  9.       self[$1.to_sym] = *args
  10.     else
  11.       self[meth]
  12.     end
  13.   end
  14. end
复制代码
丢下跑人
作者: fux2    时间: 2013-12-12 16:30
虽然看不懂但是好厉害的样子。
作者: 小传子    时间: 2013-12-12 16:32
不解释下小学生是看不懂的!
作者: 咕噜    时间: 2013-12-12 18:21
不解释下笨蛋等级君是看不懂的!
作者: Matoko    时间: 2013-12-12 18:32
貌似是简单的脚本, 但完全看不明白
作者: 576437081    时间: 2013-12-12 18:40
不解释下小5君我是不会明白的!
虽然看不懂但是看起来好强大。
貌似是一个用来毁游戏的脚本。
作者: Luciffer    时间: 2013-12-12 19:02
瞎了,有毛用=-=|||
作者: 火烧兔子    时间: 2013-12-12 19:04
不明觉厉
作者: 美丽晨露    时间: 2013-12-12 20:53
看不懂的说
这脚本不注释一下还真的不知道是有什么作用?
作者: 铃仙·优昙华院·因幡    时间: 2013-12-12 21:16
本帖最后由 铃仙·优昙华院·因幡 于 2013-12-12 21:24 编辑

对 Hash 里每个的 Key 创建一个读写方法么?

RUBY 代码复制
  1. class LazyHash < Hash
  2.   alias orig_square [] unless defined?(orig_square)  # 对 Hash 里默认的 [] 这个方法起别名
  3.   def [](*args)
  4.     self[*args]= LazyHash.new if orig_square(*args).nil?  # 如果原来 Hash 里的 *args 这个 Key 没东西, 那么就创建一个 LazyHash 实例给他.
  5.     orig_square(*args)                                                    # 返回 Key 对应的 value 值
  6.   end
  7.   def method_missing(meth,*args)                                # method_missing 这个方法 Ruby 会在找不到调用的方法 的时候被调用. meth 是那个方法名, args 这个是参数
  8.     if /(.+?)=$/.match(meth.to_s)                                   # 如果调用的方法 meth 满足最后一个字符是 '=' 时
  9.       self[$1.to_sym] = *args                                          # 创建这个 meth 对应的 值
  10.     else
  11.       self[meth]                                                                 # 返回 Key 对应的 value 值
  12.     end
  13.   end
  14. end


感觉有点点嵌套的味道. 而且有点怪怪的感觉. 最后一个赋值.
作者: ikki    时间: 2013-12-13 09:09
{:2_265:}N年米有来看不懂了。。。
作者: LBQ    时间: 2013-12-13 09:20
其实发现用method_missing经常会各种玩脱==
作者: 无脑之人    时间: 2013-12-13 12:29
method_missing看懂了,曾经加过这种修改……
但是上面修改[]是为了做什么呢?
作者: 英顺的马甲    时间: 2013-12-13 13:34
无脑之人 发表于 2013-12-13 12:29
method_missing看懂了,曾经加过这种修改……
但是上面修改[]是为了做什么呢? ...

可以做这种坑爹的事
  1. bbs66rpg = LazyHash.new
  2. bbs66rpg.user.orzfly.hate = bbs66rpg.user.fux2
  3. bbs66rpg.user.orzfly.love = bbs.66rpg.user.lynn
复制代码

作者: H·H·Y    时间: 2013-12-13 18:37
虽不明,但觉厉……
作者: 轩辕大将军    时间: 2013-12-14 13:06
第二个脚本是你想让玩家进入6R么……
作者: 晴兰    时间: 2013-12-14 23:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 你最珍贵    时间: 2013-12-15 00:18
就算注释了我也看不懂啊,我果然是个渣渣
作者: 你最珍贵    时间: 2013-12-15 00:20
就算注释了我也看不懂啊,我果然是个渣渣




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1