请教关于类方法的定义和调用
请问下面这两段代码中定义和调用类方法的方式在ruby语法中时等价的吗?class Hello
def Hello.say
puts "hello"
end
end
Hello.say
class Hello
def Hello::say
puts "hello"
end
end
Hello::say
irb(main):001:0> class Hello
irb(main):002:1> def Hello.say
irb(main):003:2> puts "hello"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> class Hello1
irb(main):007:1> def Hello1::say
irb(main):008:2> puts "hello1"
irb(main):009:2> end
irb(main):010:1> end
=> nil
irb(main):011:0> Hello.say
hello
=> nil
irb(main):013:0> Hello::say
hello
=> nil
irb(main):014:0> Hello1.say
hello1
=> nil
irb(main):015:0> Hello1::say
hello1
=> nil
由此见,是等价的。 请问下面这两段代码中定义和调用类方法的方式在ruby语法中时等价的吗?
lululau 发表于 2010-12-11 17:04 http://bbs.chinaunix.net/images/common/back.gif
::更多的用于标明名字空间。在实际中,该操作符用于访问模块方法、常量和类常量,如Math::PI、FileTest::exists? "a.txt".
虽然LZ的例子::和.差不多,但ruby实际里很少使用::定义类方法。module Foo
class Bar
end
end
x = Foo::Bar.new #=> a new instance of Foo::Bar
x = Foo.Bar.new #=> error两者也并不完全一致。 就楼主的场景,是一致的。而就祖儿的场景,是不一致的。
祖儿解释很不错哦。:em27: 谢谢zuerrong和2gua两位高手的指教 不客气,常来:)
页:
[1]