代码之家  ›  专栏  ›  技术社区  ›  Ulysse BN

如何从ruby中定义方法的类?

  •  0
  • Ulysse BN  · 技术社区  · 6 年前

    包含以下片段:

    class Foo
      def initialize
        puts self.class
      end
    end
    
    class Bar < Foo
      def bark
        puts self.class
      end
    end
    
    class Fizz < Bar
    end
    
    Fizz.new.bark
    

    此片段将输出两次 Fizz ( live example ). 我想找个替代品 self.class 它允许这个程序输出 Foo (从初始化)然后 Bar (从树皮上)。

    我目前的解决方案是硬编码函数名,但我希望有更动态的东西。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Sergio Tulentsev    6 年前

    这很管用。( 不过,也许还有更好的办法。 )

    class Foo
      def initialize
        puts method(__callee__).owner
      end
    end
    
    class Bar < Foo
      def bark
        puts method(__callee__).owner
      end
    end
    
    class Fizz < Bar
    end
    
    Fizz.new.bark
    # >> Foo
    # >> Bar