YAML 数据库

有关以 YAML 格式保存和加载数据的稍微复杂的应用程序的示例,你可能需要查看 cd_db.rb。这里实现了一个简单的 CD 数据库。它定义了三种类型的 CD 对象 - 一个基本 CD,其中包含有关名称,艺术家和轨道数量的数据以及两个更专业的后代类 - PopCD,它添加了关于类型(例如“摇滚”或“乡村”)的数据以及 ClassicalCD 添加了导师和作曲家的数据。

当程序运行时,用户可以输入数据以创建这三种类型中的任何一种的新 CD 对象。还有一个将数据保存到磁盘的选项。随后运行应用程序时,将重新加载现有数据。

数据本身在代码中被组织得非常简单(甚至微不足道!),在创建对象本身之前将每个对象的数据读入数组。整个 CD 对象数据库被保存到全局变量 $cd_arr 中,并将其写入磁盘并使用 YAML 方法重新加载到内存中:

cd_db.rb
  1. def saveDB
  2. File.open( $fn, 'w' ) {
  3. |f|
  4. f.write($cd_arr.to_yaml)
  5. }
  6. end
  7. def loadDB
  8. input_data = File.read( $fn )
  9. $cd_arr = YAML::load( input_data )
  10. end

在现实世界的应用程序中,我确信你希望创建一些更优雅的数据结构来管理你的 Dolly Parton 集合!