Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

像 Lua 那样引用 Hash 元素

Lua 中的 Table 可以拿来当作多种数据格式来使用,比如 Hash ( Dictionary ):

  1. h = {a=1,b=2,c=3}
  2. print(h['a'])
  3. 1

最爽的是,可以用 h.a 这种形式来引用 Hash 中的元素:

  1. print(h.a)
  2. 1

 利用 Ruby 的 method_missing,也可以这样爽一把,仅仅需要:

  1. class Hash
  2.     def method_missing(method, *args)
  3.         self[method]
  4.     end
  5. end

即可,测试:

  1. h = {:a => 1, :b => 2, :c => 3}
  2. puts h.a
  3. 1

只要 hash 的 key 不要与 Hash 内置的方法重名就可以了~ 

啥?还要实现赋值? 这个好办,只要将上面的代码改为:

  1. class Hash
  2.     def method_missing(method, *args)
  3.         if method.to_s =~ /=$/
  4.             self[method.to_s.chop.to_sym] = *args
  5.         else
  6.             self[method]
  7.         end
  8.     end
  9. end

就可以了,测试:

  1. h = {:a => 1, :b => 2}
  2. h.a = 456
  3. puts h.a
  4. 456

感觉不错~