我正在读一篇描述 Ruby 的文章,其中写道:
Ruby 被认为是“反思性的”
语言,因为有可能
Ruby 程序分析自身(在
其构成条款),使
调整其工作方式,以及
甚至用其他代码覆盖自己的代码
代码。
我对“反射”这个术语感到困惑 - 这主要是在谈论 Ruby 如何查看变量并确定它是整数还是字符串(鸭子类型),例如:
x = 3
x = "three" # Ruby reassigns x to a String type
说 Ruby 是“反射性的”意味着你可以在运行时找出一个类有哪些方法:
>> Array.methods
=> ["inspect", "private_class_method", "const_missing",
[ ... and many more ... ]
(您可以对类的对象执行相同的操作。)
或者你可以找出给定对象是什么类......
>> arr = Array.new
=> []
>> arr.class
=> Array
并找出它在类层次结构中的内容......
>> arr.kind_of?
>> arr.kind_of? Array
=> true
>> arr.kind_of? String
=> false
他们在引言中说“Ruby 程序可以自我分析”,这就是他们所谈论的内容。
其他语言(例如 Java)也可以这样做,但是使用 Ruby,它更容易、更方便,并且更像是使用该语言的日常部分。因此,Ruby 是“反思性的”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)