代码之家  ›  专栏  ›  技术社区  ›  RockMeetHardplace

Ruby中公共类方法的私有类方法[duplicate]

  •  0
  • RockMeetHardplace  · 技术社区  · 7 年前
    class Foo
      def self.bar()
        puts("bar")
      end
      private_class_method :bar
    
      def self.foo()
        self.bar()
      end
    end
    

    鉴于上述例子,为什么:

     > Foo.foo()
    NoMethodError: private method `bar' called for Foo:Class
    

    而不是:

     > Foo.foo()
    => bar
    

    Thing.helper(...) 等等。。。我更希望内部方法的作用域是私有的,这样至少有人必须特意直接调用它们。有没有办法达到我想要的?

    Java等价物:

    class Foo {
      private static void bar() {
        System.out.println("bar");
      }
      public static void foo() {
        bar();
      }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Marek Lipka    7 年前

    因为你试图用显式接收器调用你的私有方法, self . 试着简单一点

    def self.foo
      bar
    end
    
    推荐文章