ruby 中的元编程细节

  • method_missing: 这个方法允许以开放的态度接受信息,而对开放程度把握是个权衡。安全做法都是加以限制。

    • 完全限制

      RANGE = %w(one two three)
      def method_missing(method_id, *args, &block)
          RANGE.include?(method_id.to_s) || super
          # do sth
      end
      
    • 开放限制

      • 正则匹配等

    refer: metaprogramming ruby 2.4节

(书粗读了一遍,也在看一些比较流行的 gem 的代码,还需熟悉。待整理吧

你可能感兴趣的:(ruby 中的元编程细节)