Ruby 初始化对象时如何调用方法?

Ruby 初始化对象时如何调用方法?,ruby,Ruby,当我使用ChangeOrderLog.new('path/to/file')时,如何在类内直接调用方法read\u电子表格,而不是调用cop\u log.read\u电子表格 cop\u log.read\u spreadsheet使用excel电子表格中的数据填充@cop\u log哈希,是否有任何方法可以从ChangeOrderLog类内部而不是外部填充哈希 require 'creek' class ChangeOrderLog attr_reader :creek, :sheet

当我使用
ChangeOrderLog.new('path/to/file')时,如何在类内直接调用方法
read\u电子表格
,而不是调用
cop\u log.read\u电子表格

cop\u log.read\u spreadsheet
使用excel电子表格中的数据填充
@cop\u log
哈希,是否有任何方法可以从ChangeOrderLog类内部而不是外部填充哈希

require 'creek'

class ChangeOrderLog
  attr_reader :creek, :sheet
  attr_accessor :cop_log
  def initialize(file)
    @creek = Creek::Book.new file
    @sheet= @creek.sheets[0]
    @cop_log = {}
  end
  def read_spreadsheet
    sheet.rows.each { |row| cop_log.merge!(row) }
  end
  def job_number
    return cop_log['G1']
  end
end

cop_log = ChangeOrderLog.new('path/to/file')
cop_log.read_spreadsheet
puts cop_log.job_number

您可以在其他方法中调用方法,
initialize
也不例外:

def initialize(file)
    @creek = Creek::Book.new file
    @sheet= @creek.sheets[0]
    @cop_log = {}
    read_spreadsheet
end

您可以在其他方法中调用方法,
initialize
也不例外:

def initialize(file)
    @creek = Creek::Book.new file
    @sheet= @creek.sheets[0]
    @cop_log = {}
    read_spreadsheet
end

调用
initialize
时,对象已经存在,只是还没有初始化。因此,您可以在
initialize
中调用方法,但要在对象的其余部分初始化后执行,尤其是
@sheet

  def initialize(file)
    @creek = Creek::Book.new file
    @sheet= @creek.sheets[0]
    @cop_log = {}

    read_spreadsheet
  end

read\u电子表格
是self.read\u电子表格
的缩写。是调用的对象
initialize
(或任何其他方法)。在本例中,
self
是您新创建的
ChangeOrderLog
对象。

调用
initialize
时,该对象已经存在,只是还没有初始化。因此,您可以在
initialize
中调用方法,但要在对象的其余部分初始化后执行,尤其是
@sheet

  def initialize(file)
    @creek = Creek::Book.new file
    @sheet= @creek.sheets[0]
    @cop_log = {}

    read_spreadsheet
  end

read\u电子表格
是self.read\u电子表格的缩写。是调用的对象
initialize
(或任何其他方法)。在本例中,
self
是您新创建的
ChangeOrderLog
对象。

将其放入
initialize
。将其放入
initialize