Ruby类方法的定义

Ruby定义类方法(即static method)有几种,简单的例子

class Foo
    def Foo.dummy1
        puts "dummy1"
        @name = "dummy1"
        @@var = "dummy1"
        puts @name
    end 

    def Foo::dummy2
        puts "dummy2"
        @name = "dummy2"
        @@var = "dummy2"
        puts @name
    end 

    def self.dummy3
        puts "dummy3"
        @name = "dummy3"
        @@var = "dummy3"
        puts @name
    end 

    def putsName
        puts @name
        puts @@var
    end 
end

Foo.dummy1
Foo.dummy2
Foo.dummy3
a = Foo.new
#a.dummy1 #NoMethodError
#a.dummy2 #NoMethodError
#a.dummy3 #NoMethodError
a.putsName

 值得注意的是,类方法不能在实例里面调用,这个跟C++和Java等有所不同。输出结果是:

dummy1
dummy1
dummy2
dummy2
dummy3
dummy3

dummy3
 这里,同样的,实例属性@name的值虽然在类方法里面引用了,但是不会影响到实例a。而类变量@@var的值则被改变了。

 

 

你可能感兴趣的:(Ruby)