ruby-on-rails - 当你说 Ruby 是反光的时候,这主要是指 "duck typing"吗?

标签 ruby-on-rails ruby reflection duck-typing

我正在阅读一篇描述 Ruby 的文章,它说了以下内容:

Ruby is considered a “reflective” language because it’s possible for a Ruby program to analyze itself (in terms of its make-up), make adjustments to the way it works, and even overwrite its own code with other code.

我对“反射”这个术语感到困惑 - 这主要是在谈论 Ruby 可以查看变量并确定它是整数还是字符串(鸭子类型(duck typing))的方式,例如:

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 程序可以 self 分析”这句话中,他们就是这么说的。

其他语言(如 Java)也这样做,但使用 Ruby 更容易、更方便,并且更像是使用该语言的日常部分。因此,Ruby 是“反射性的”。

关于ruby-on-rails - 当你说 Ruby 是反光的时候,这主要是指 "duck typing"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546968/

相关文章:

ruby - 在 OS X 10.9.2 上安装 RedCloth (4.2.9) 时出错

c# - 在动态加载的第三方程序集中使用静态类

ruby-on-rails - 我不小心将更新 bundle 到 Rails 4.0,如何撤消?

ruby-on-rails - haml 标签内的任何 Rails 代码都会在浏览器 html 标签内生成空白/空字符

ruby - 如何使用 Nokogiri 阅读器界面告知节点的行号?

ruby-on-rails - Ubuntu 未检测到 Rails 安装

java - 我怎样才能找到一个字段(jackson)的 JSON 键?

java - 如何在运行可执行 jar 时查找类

ruby-on-rails - 将键/值对转换为哈希

ruby-on-rails - 如何国际化/本地化我的 Rails 插件?