看 ruby 元编程第二版,有一段代码理解了很久看不懂,现在抛出了,求帮忙解释。p57
module Hashie
class Mash < Hashie::Hash
def method_missing(method_name, *args, &blk)
return self.[](method_name, &blk) if key?(method_name)
match = method_name.to_s.match(/(.*?)([?=!]?)$/)
case match[2]
when "="
self[match[1]] = args.first
#...
else
default(method_name, *args, &blk)
end
end
end
end
其中两句不理解:
self.[](method_name, &blk) #[]方法是什么意思,api中没有找到
(/(.*?)([?=!]?)$/) #(.*?)和([?=!]?)如何理解?
我自己查了蛮多资料,找不到解释的入口,求帮忙指点。