Ruby中,实例方法可以隐式使用类变量,但是必须显式使用类方法

class C
  @@Const1=1
  Const2=2
  @@var3=3

  def self.m
    p @@Const1,Const2,@@var3;
  end 

  def m2
    p @@Const1,Const2,@@var3;
    C::m #ok 
    #m #error:undefined local variable or method `m'
  end 

end

p C::Const2;#2

#Ruby中使用双冒号(::)方式调用方法或变量时,
#    Ruby倾向于把大写字母开头的名字,当做常量,把小写字母开头的名字,当做方法;
#使用点号(.)调用时,总是被当做方法
#p C::var3; #error:undefined method `var3' for C:Class (NoMethodError)'
#p C.var3; #error:undefined method `var3' for C:Class (NoMethodError)'
#p C::Const1; #error:uninitialized constant C::Const1 (NameError)
#p C.Const1; #error:undefined method `Const1' for C:Class (NoMethodError)'

C.m
#1
#2
#3

c=C.new
c.m2
#1
#2
#3
#1
#2
#3

在Ruby中,实例方法中可以隐式使用类变量,但是对类方法的使用,必须显式使用。






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值