您希望用ruby造句,如同用英语造句一样:
Is axgle good?
Yes it is
Oh my god! this is very cool!
复制内容到剪贴板
代码:
class Sentence
def initialize(start)
print start.to_s + " "
end
def method_missing(sym)
print sym.to_s + " "
return self
end
end
is=Sentence.new("Is")
is.axgle.good?
puts ""
yes=Sentence.new("Yes")
yes.it.is
puts ""
oh=Sentence.new("Oh")
oh.my.god.this.is.very.cool!axgle说明:当你在ruby里定义某些特殊名称的方法后,ruby会在预先规定的地方自动调用这些方法。例如initialize方法,只要你定义了这个方法,那么ruby就会在你使用new生成新对象的时候调用initialize方法.
当你使用new生成了一个对象后,而这个对象又调用了不存在的方法,那么ruby会调用method_missing这个特殊方法。method_missing这个方法的第一个参数是一个符号,表示的是那个原本就不存在的方法的名字。
initialize方法和method_missing方法都是ruby默认提供的“钩子”方法,只要你定义了它们,它们就会在适当的地方被自动调用(除非你不定义它们)
最后,问号和感叹号都可以作为方法名的一部分,very.cool!