我正在阅读描述Ruby的文本,它说如下:
Ruby被认为是一种"反思"语言,因为Ruby程序可以分析自身(就其构成而言),调整其工作方式,甚至用其他代码覆盖自己的代码.
我对这个术语"反思"感到困惑 - 这主要是谈论Ruby可以查看变量的方式,并弄清楚它是一个整数还是一个字符串(鸭子打字),例如:
x = 3 x = "three" # Ruby reassigns x to a String type
Ethan.. 9
要说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是"反思的".
要说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是"反思的".