比如下面一个文件 people.txt
引用
name,age,weight,height
"Smith, John", 35, 175, "5'10"
"Ford, Anne", 49, 142, "5'4"
"Taylor, Burt", 55, 173, "5'10"
"Zubrin, Candace", 23, 133, "5'6"
我们的目标是什么呢?我们的目标就是实现类似于Rails中的Builder模块所做的事情,假设我们第二行数据 对象为a,那么我们可以通过a.name,a.age等等来得到他所对应的值:
class DataRecord
def self.make(file_name)
data = File.new(file_name)
header = data.gets.chomp
data.close
#首先得到文件名,然后根据文件名动态的创建此文件对应的类
class_name = File.basename(file_name,".txt").capitalize
klass = Object.const_set(class_name,Class.new)
names = header.split(",")
#设置实例变量,并且将实例变量赋值
klass.class_eval do
attr_accessor *names
define_method(:initialize) do |*values|
names.each_with_index do |name,i|
instance_variable_set("@"+name, values[i])
end
end
#当put时能打印出显示更好的结果
define_method(:to_s) do
str = "<#{self.class}:"
names.each {|name| str << " #{name}=#{self.send(name)}" }
str + ">"
end
alias_method :inspect, :to_s
end
#读取数据然后将每一行数据都放进一个数组
def klass.read
array = []
data = File.new(self.to_s.downcase+".txt")
data.gets
data.each do |line|
line.chomp!
values = eval("[#{line}]")
array << self.new(*values)
end
data.close
array
end
klass
end
end
DataRecord.make("people.txt")
list = People.read
p list[1].name
p list[1].age
分享到:
相关推荐
- **开源项目**:Boost库中的`boost::mpl`(MetaProgram Library)是一个全面展示模板元编程实践的优秀项目。 通过上述知识点的总结,我们可以看出模板元编程是一种强大且灵活的技术,它不仅可以帮助开发者编写更...
C++模板是C++编程语言中的一个重要特性,它允许程序员创建泛型代码,实现代码复用,提升效率并保持灵活性。在"两本很好的讲解c++ template的书"中,我们可以期待深入理解模板的各个方面,包括基本概念、特性和最佳...
A metaprogram is a program that generates or manipulates program code. Ever since generic programming was introduced to C++, programmers have discovered myriad "template tricks" for manipulating ...
无论如何,所有读者都将获得一个可以自由支配的、威力空前的新工具:Boost Metaprogramming Library。 附赠光盘内容包含所有Boost C++ 程序库:Boost Metaprogramming Library及其参考文件,还包含所有随书代码示例...
"monster"项目正是这样一个深入探讨和实践C++ TMP艺术的资源库,它揭示了如何利用 TMP 来解决复杂问题,并展示其在现代C++编程中的应用。 TMP是C++的一个关键特性,它基于模板系统,通过在编译期间创建和操作类型...
本书不仅为读者提供了一个全面而系统的C++模板编程的介绍,而且作为参考资料,涵盖了从基础到高级的模板技术,包括函数模板和类模板的使用和实现。 在本书中,作者详细阐述了模板元编程(TMP)作为一种技术集合,它...
C++三大编程方向:面向对象、泛型编程、模板元编程之一的描述专著,分两卷压缩,此为第一卷。 本书是关于C++模板元编程的著作。本书主要介绍Traits和类型操纵、深入探索元函数、整型外覆器和操作、序列与迭代器、...