開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Ruby 2.3 (プログラミング言語)
7つの言語 7つの世界 (Bruce A. Tate (著)、まつもとゆきひろ (監訳)、田和 勝 (翻訳)、オーム社)の第2章(Ruby)、2.4(3日目: 真剣な変更)、セルフスタディ3日目を取り組んでみる。
セルフスタディ3日目
コード(Emacs)
#!/usr/bin/env ruby2.3
# -*- coding: utf-8 -*-
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 = []
@csv_rows = []
filename = self.class.to_s.downcase + '.txt'
file = File.new(filename)
@headers = file.gets.chomp.split(', ')
file.each do |row|
csv_row = CsvRow.new(@headers, row.chomp.split(', '))
@csv_rows << csv_row
end
end
end
def each
@csv_rows.each do |row|
yield row
end
end
attr_accessor :headers, :csv_contents
def initialize
read
end
end
class CsvRow
def initialize headers, csv_contents
@headers = headers
@csv_contents = csv_contents
end
def method_missing name, *args
@csv_contents[@headers.index(name.to_s)]
end
end
class RubyCsv
include ActsAsCsv
acts_as_csv
end
csv = RubyCsv.new
csv.each do |row|
puts row.one
end
入出力結果(Terminal, irb)
$ ./sample.rb lions $
0 コメント:
コメントを投稿