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的值则被改变了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值