【问题标题】:How do I find data types in Rails documentation?如何在 Rails 文档中查找数据类型?
【发布时间】:2013-01-20 08:32:52
【问题描述】:

对 Ruby 来说相对较新,我在文档方面遇到了很多麻烦。我的主要问题是,我如何判断一个方法返回什么类型的对象?

如果我查看 Objective-C 或 Java 文档,我可以看到:

FunctionX 返回 Y 类型的对象。

我可以单击 Y 并了解有关该课程的所有信息。对比一下 ActiveRecord::Base 的docs。如果我查看#connection 方法,它会告诉我:

Returns the connection currently associated with the class. 

什么是连接?我想了解更多关于连接对象的类。不是每个方法都指定返回类型是什么吗?

【问题讨论】:

  • 那么您的实际问题是什么?
  • 如何在文档中告诉返回类型是什么......
  • 另请注意,文档包含每个方法的“显示源代码”链接,该链接将显示您该方法返回的内容,但如果您这样做可能不会让您更明智坚持期待静态类型。
  • @CodeGnome 啊我明白了。所以我必须阅读源代码以了解返回的内容......有点违背了类/封装的目的之一,不是吗?
  • @0xSina 不是。 Ruby 对象更易变,所以一旦考虑到 mixins 和单例,类层次结构告诉你的比你想象的要少。如果您想要静态类型或不可变返回值,Ruby 可能不是解决您问题的正确选择。

标签: ruby-on-rails ruby return-value duck-typing rails-activerecord


【解决方案1】:

Ruby 使用 Duck 类型

Ruby 并没有像你想象的那样使用类型。方法只返回最后评估的任何表达式。你可以对返回值做任何你想做的事情,包括:

  1. #inspect它。
  2. 询问其#class
  3. 看看会不会#respond_to?一些方法。
  4. 无论您想用它做什么。

关于你的问题...

Rails 文档对于您通常希望在应用程序中接触到的内容相当详尽,但它们对内部结构可能不太清楚。不过,ActiveRecord::Base 的 API 文档似乎一点也不不清楚。

连接通常通过::establish_connection 创建并由#connection 检索。从 ActiveRecord::Base 继承的所有类都将使用此连接。

出于实际目的,您将返回一个描述数据库连接的对象,该对象通常在您的config/database.yml 文件中定义。例如:

$ rails runner 'puts ActiveRecord::Base.connection.class'
ActiveRecord::ConnectionAdapters::SQLite3Adapter

如果您想了解 Rails 的内部结构,您可能需要了解一些深层嵌套的方法调用并了解支撑该框架的 Ruby 元编程(例如 BasicObject#method_missing)。但是,您可以通过使用鸭子类型来处理返回的对象,从而为自己省去很多麻烦。

【讨论】:

    猜你喜欢
    • 2022-10-01
    • 2013-02-24
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多