【发布时间】:2009-02-13 17:53:45
【问题描述】:
我正在阅读一篇描述 Ruby 的文字,它说:
Ruby 被认为是“反光” 语言,因为它是可能的 用于分析自身的 Ruby 程序(在 其构成),使 调整其工作方式,以及 甚至用其他代码覆盖自己的代码 代码。
我对“反射”这个术语感到困惑 - 这主要是在谈论 Ruby 可以查看变量并确定它是整数还是字符串(鸭子类型)的方式,例如:
x = 3
x = "three" # Ruby reassigns x to a String type
【问题讨论】:
-
我想你也对“duck-typing”这个词感到困惑。它不是查看变量并确定其类型,而是以相同的方式处理响应特定方法的任何类型。例如 "123".size 和 [1,2,3].size - ...(继续下一条评论)
-
所以,如果你创建一个像这样的方法 "def print_size(obj) puts obj.size; end" - 你传递一个字符串还是一个数组都没关系,它不会起作用类型很重要,因为两者都实现了“大小”。换句话说,他们都“嘎嘎”,所以他们一定是“鸭子”(这不是真的)——这就是 Ruby 的想法。
标签: ruby-on-rails ruby reflection duck-typing