Project1

标题: Ruby仿js的object [打印本页]

作者: SailCat    时间: 2018-1-20 19:18
标题: Ruby仿js的object
本帖最后由 SailCat 于 2018-1-20 19:24 编辑

其实我也不知道能有啥用……
而且ruby没有undefined(熟悉js的应该知道这和null不太一样)只好用nil了

RUBY 代码复制
  1. class JObject < Hash
  2.  
  3.   def method_missing(symbol, *args)
  4.     if symbol.to_s[-1] == ?=
  5.       self[symbol.to_s[0..-2].to_sym]= args[0]
  6.     elsif keys.include?(symbol)
  7.       self[symbol]
  8.     else
  9.       nil
  10.     end
  11.   end
  12. end
  13.  
  14. c = JObject.new
  15. c.str = 1
  16. c.dex = 2
  17. c.int = 3
  18. c.def = "4"
  19. p c      #{:str=>1, :dex=>2, :int=>3, :def:=4}
  20. p c.str  # 1
  21. p c.dex  # 2
  22. p c.int  # 3
  23. p c.def  # "4"
  24. p c.mdf  # nil
  25. c.sub = JObject.new
  26. c.sub.r = 5
  27. p c.sub.r # => 5
  28. c.func = Proc.new {p c.str}
  29. c.func.call #=> 1



作者: chd114    时间: 2018-1-20 19:30
get√
话说我刚发了一个多背包,不过xp弄起来似乎麻烦一些,你要不要看一下?
https://rpg.blue/thread-405179-1-1.html
作者: fux2    时间: 2018-1-20 19:33
不如直接定义在hash里,就完全一样了2333
作者: 晴兰    时间: 2018-1-22 11:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: shitake    时间: 2018-1-26 00:09
https://github.com/molingyu/blog/issues/3
【逃




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