【问题标题】:Understanding Ruby messages理解 Ruby 消息
【发布时间】:2013-03-09 02:37:41
【问题描述】:

提供一些背景;过去几个月我一直在学习 Ruby(已经阅读了大部分 Well-Grounded-Rubyist,完成了 Poignant ruby​​ 指南,并计划在之后阅读 Eloquent ruby​​)我已经掌握了大多数概念,即对象、Ruby 内核(基础)、范围、循环等,但是,在将消息/方法发送到代码时,我感到很困惑。

我们以这行代码为例:toolkit = Toolkit.get_default_toolkit

现在 toolkit 是 Toolkit 对象的变量,而 get_default_toolkit 是方法/消息。我在大多数代码中发现模棱两可的是方法/消息没有在任何地方定义。所以我的问题是,有没有我们(rubyists)可以研究的核心消息/方法列表?

或者这些方法只是范围大,并且在程序中的其他地方定义?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems


    【解决方案1】:

    这些方法是在类定义中定义的,因为它们几乎适用于每种语言。 get_default_toolkit 不是您必须通过核心 Ruby 类来查找的低级方法,它是类 Toolkit 的一部分,并且将在定义该类的任何位置进行定义。

    这样的方法,例如在KernelObject 中定义的方法,但get_default_toolkit 不是其中之一。

    对于任何给定的方法,您可以通过调用object.method('method_name').owner 来确定它是在哪个类中定义的,或者通过调用.source_location 来找出它的定义位置(文件/行号)。

    现在 toolkit 是 Toolkit 对象的变量

    更好的措辞是toolkit 是一个变量,Toolkit 是一个类,toolkit 现在包含Toolkit 类的一个新实例

    【讨论】:

      【解决方案2】:

      如果您想查找可用于对象或类的方法调用,您可以在其上调用 .methods

      例如

      pp String.methods.sort
      
      thing = Array.new
      pp thing.methods.sort
      

      我喜欢用 pp 调用它们并排序,以便它们以可读的方式打印

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-20
        • 2018-05-25
        相关资源
        最近更新 更多