发布于 2016-02-07 21:53:51 | 92 次阅读 | 评论: 0 | 来源: 网友投递
Ruby编程语言
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。
我们知道顶级域,定义域的self是啥?
puts self #main
puts self.class #Object
def tell_me_who
puts self
end
tell_me_who #main
Error:test.rb:8: undefine: undefined local variable or method `ask' for main:Object (NameError)
验证:
puts self #main
puts self.class #Object
def self.method_missing(name,*arg)
puts "#{name} is not exist!"
end
puts ask #ask is not exist!
def self.method_missing(name,*arg)
1.times do
puts method_name=name
end
puts "#{method_name} is not exist!"
end
意图:让任何未定义的变量或者方法,都打印一次
可是,这是一个死循环?看出问题了吗
ask被执行,可是没有定义ask,就会转到method_missing,
method_name在times的block中,出了作用域了,所以又会执行method_missing,变成了死循环。