像 Lua 那样引用 Hash 元素
Lua 中的 Table 可以拿来当作多种数据格式来使用,比如 Hash ( Dictionary ):
-
h = {a=1,b=2,c=3}
-
print(h['a'])
-
1
最爽的是,可以用 h.a 这种形式来引用 Hash 中的元素:
-
print(h.a)
-
1
利用 Ruby 的 method_missing,也可以这样爽一把,仅仅需要:
-
class Hash
-
def method_missing(method, *args)
-
self[method]
-
end
-
end
即可,测试:
-
h = {:a => 1, :b => 2, :c => 3}
-
puts h.a
-
1
只要 hash 的 key 不要与 Hash 内置的方法重名就可以了~
啥?还要实现赋值? 这个好办,只要将上面的代码改为:
-
class Hash
-
def method_missing(method, *args)
-
if method.to_s =~ /=$/
-
self[method.to_s.chop.to_sym] = *args
-
else
-
self[method]
-
end
-
end
-
end
就可以了,测试:
-
h = {:a => 1, :b => 2}
-
h.a = 456
-
puts h.a
-
456
感觉不错~