ruby - 从文件外部访问实例

标签 ruby class object import require

我有如下三个文件:

  • database.rb - 代表一个数据库
  • log.rb - 记录数据库中发生的事情
  • main.rb - 接受用户输入并从其他文件调用函数的驱动程序

数据库.rb

class Database
  def initialize()
      @data = Hash.new
      @modified_recently = false
  end

  def build_db
    # Reads CSV file into program
  end
end

主.rb

require_relative "./database"
require_relative "./log"

db = Database.new # Create a new database
log = Log.new # Create a new log
db.build_db # Build the database from a file

问题是我需要日志才能访问数据库。但是,我正在 main.rb 中创建对象(它需要 log.rb 因此我不能从那里也需要它)。我的设置完全错误吗?我怎样才能:

  1. maindatabaselog 发送命令>
  2. 数据库存储数据
  3. log 能够了解数据库中发生的事情

最佳答案

如果我正确理解了问题,只需将 Database 的实例传递给 Log 的构造函数:

class Log
  def initialize db
    @db = db
  end
  ...
end

main.rb 中:

db = Database.new # Create a new database
log = Log.new db  # Create a new log

关于ruby - 从文件外部访问实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36565314/

相关文章:

c++ - Friend 类及其所有后代

java - java中私有(private)对象是如何传递的?

javascript - 在javaScript中查找对象数组中键的索引

java - 使用字符串值创建变量名

ruby-on-rails - Rails ActiveRecord::StatementInvalid: PG::UndefinedTable: 错误:关系 "pg_range"不存在 第 3 行:LEFT JOIN pg_range as r ON oid = rngtypid

Ruby - 递归地哈希到方法

ruby - Github 服务/Ruby Gem "eventmachine"Mac 安装问题

ruby - 我在 ruby​​ 1.8 应用程序中使用 ftools,如何使其与 ruby​​ 1.9 兼容

Python:如何在 doctest 中定义一个类?

javascript - 需要帮助通过数组获取类名