在Ruby中两次定义同一个类

坎农·莫耶

以下代码有效,但我不明白为什么。我有两个文件。第一个是walmart.rb位于的类active_market/walmart.rb这是类的定义:

module ActiveMarket
    class Walmart
        def test_one
            puts "test one"
        end
    end
end

对于我的Walmart班级,我有沃尔玛API的“ API实现”,例如Order,Fulfillment,Report等。因此,我在上为我的第一个API实现创建了一个文件夹和另一个类active_market/walmart/order.rb

这是Order类的定义:

class ActiveMarket::Walmart
  def test_two
    puts "test two"
  end

  class Order < ActiveMarket::Walmart
    def test_all
      test_two
      test_one
    end
  end

end

我希望能够打电话ActiveMarket::Walmart.newActiveMarket::Walmart::Order.new为了做到这一点,我不得不再次定义类,ActiveMarket::Walmart如上所示,并将Order该类放置在里面。这按预期工作,但我不明白为什么我能够成功调用所有这三个函数。

ActiveMarket::Walmart.new.test_one
ActiveMarket::Walmart.new.test_two
ActiveMarket::Walmart::Order.new.test_all

那么,问题是为什么这行得通?为什么我可以同时在两个完全不同的文件中定义的同一类中调用test_onetest_two函数?我原本希望其中一个ActiveMarket::Walmart类被完全覆盖。这有什么缺点吗?还是应该更改实施方式?

提前致谢。

斯派克曼

Ruby允许重新打开现有的类并向其添加其他方法,或覆盖现有的方法。

在您的示例中,实际上只有一个ActiveMarket::Walmart类定义了两个实例方法。尝试这个:

walmart = ActiveMarket::Walmart.new
walmart.test_one
#=> test one
walmart.test_two
#> test two

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

java在同一个类中两次使用类名时传递变量

来自分类Dev

避免在 Spring Batch 中两次处理同一个文件

来自分类Dev

在 PHP 中对同一个 mysql 查询迭代两次

来自分类Dev

无法基于两个条件两次 JOIN 同一个表

来自分类Dev

如果您在两次部署在Tomcat中的战争中两次拥有同一个班级,将会发生什么?

来自分类Dev

有什么办法可以在Kotlin中两次从同一个通用接口继承(使用单独的类型)?

来自分类Dev

这是如何工作的,其中 Enum 在同一个声明中设置了两次值?

来自分类Dev

如果您在两次部署在tomcat的战争中两次拥有同一个班级,将会发生什么情况?

来自分类Dev

java中同一个线程调用start()方法两次,有时执行run()方法两次;内部究竟发生了什么?

来自分类Dev

对同一个幻像实例使用两次createPage()

来自分类Dev

SQL查询,使用同一个表两次

来自分类Dev

在同一个ForeignKey上加入两次

来自分类Dev

如何模拟 Dao 两次但被同一个 Object 调用?

来自分类Dev

实体框架两次插入同一个实体

来自分类Dev

将同一个被测设备实例化两次

来自分类Dev

两次加入同一个父表的 SQL 查询

来自分类Dev

Airflow 两次执行同一个操作符

来自分类Dev

如何避免加入同一个维度表两次

来自分类Dev

MongoDb,防止两次创建同一个对象

来自分类Dev

如何两次加入同一个表

来自分类Dev

我可以在一个剧本执行中两次使用同一个Ansible处理程序吗?

来自分类Dev

我可以在两个不同的文件中对同一个ng-app进行两次angular.module调用吗?

来自分类Dev

在javascript中如何通过一些修改将同一个对象两次推送到数组中而不覆盖该数组

来自分类Dev

春天:在同一个类中定义并连接一个bean

来自分类Dev

我可以使用不同的排除项在声纳中对同一个Maven项目进行两次分析吗?

来自分类Dev

让同一个人两次响应,如何从数据库中删除1 ...帮助确实卡住了

来自分类Dev

如何在詹金斯的同一个奴隶上同时启动工作两次?

来自分类Dev

BIOS 从不同的端口连续读取两次到同一个寄存器

来自分类Dev

Laravel:我不能在同一个函数中使用请求对象两次

Related 相关文章

  1. 1

    java在同一个类中两次使用类名时传递变量

  2. 2

    避免在 Spring Batch 中两次处理同一个文件

  3. 3

    在 PHP 中对同一个 mysql 查询迭代两次

  4. 4

    无法基于两个条件两次 JOIN 同一个表

  5. 5

    如果您在两次部署在Tomcat中的战争中两次拥有同一个班级,将会发生什么?

  6. 6

    有什么办法可以在Kotlin中两次从同一个通用接口继承(使用单独的类型)?

  7. 7

    这是如何工作的,其中 Enum 在同一个声明中设置了两次值?

  8. 8

    如果您在两次部署在tomcat的战争中两次拥有同一个班级,将会发生什么情况?

  9. 9

    java中同一个线程调用start()方法两次,有时执行run()方法两次;内部究竟发生了什么?

  10. 10

    对同一个幻像实例使用两次createPage()

  11. 11

    SQL查询,使用同一个表两次

  12. 12

    在同一个ForeignKey上加入两次

  13. 13

    如何模拟 Dao 两次但被同一个 Object 调用?

  14. 14

    实体框架两次插入同一个实体

  15. 15

    将同一个被测设备实例化两次

  16. 16

    两次加入同一个父表的 SQL 查询

  17. 17

    Airflow 两次执行同一个操作符

  18. 18

    如何避免加入同一个维度表两次

  19. 19

    MongoDb,防止两次创建同一个对象

  20. 20

    如何两次加入同一个表

  21. 21

    我可以在一个剧本执行中两次使用同一个Ansible处理程序吗?

  22. 22

    我可以在两个不同的文件中对同一个ng-app进行两次angular.module调用吗?

  23. 23

    在javascript中如何通过一些修改将同一个对象两次推送到数组中而不覆盖该数组

  24. 24

    春天:在同一个类中定义并连接一个bean

  25. 25

    我可以使用不同的排除项在声纳中对同一个Maven项目进行两次分析吗?

  26. 26

    让同一个人两次响应,如何从数据库中删除1 ...帮助确实卡住了

  27. 27

    如何在詹金斯的同一个奴隶上同时启动工作两次?

  28. 28

    BIOS 从不同的端口连续读取两次到同一个寄存器

  29. 29

    Laravel:我不能在同一个函数中使用请求对象两次

热门标签

归档