这是7周内7种编程语言的Ruby部分第3天的代码。如果我在m = RubyCsv.new
之后不写m.read,我就无法输出任何内容初始化方法不应该处理吗?
要测试您可以使用包含
的简单rubycsv.txt文件一,二
1,2
这是红宝石代码:
module ActsAsCsv
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def acts_as_csv
include InstanceMethods
end
end
module InstanceMethods
def read
@csv_contents = []
filename = 'rubycsv.txt'
file = File.new(filename)
@headers = file.gets.chomp.split(', ')
file.each do |row|
@csv_contents << row.chomp.split(', ')
end
end
attr_accessor :headers, :csv_contents
def initalize
read
end
end
end
class RubyCsv
include ActsAsCsv
acts_as_csv
end
m = RubyCsv.new
**m.read** #this shouldn't be necessary according to the book
puts m.headers.inspect
puts m.csv_contents.inspect
答案 0 :(得分:2)
初始化方法不应该处理这个吗?
它应该。然而,你的方法被称为“初始化”。
另外:对于CSV使用现有的CSV库,并尝试使用File.open而不是File.new(这显示了用于打开文件的模式)。