5分钟认识YAML
译: liubin http://www.ruby-cn.org/
原文: http://yaml.kwiki.org/index.cgi?HomePage
文档位置:http://www.ruby-cn.org/articles/yaml_in_5_minutes.html
2004/11/11
译者注:在开始之前,也许,你想先看看yaml的基本概念,如果是,请点这里:http://www.ruby-cn.org/articles/what_is_yaml.html
第一分钟:一个简单的列表
你的朋友给你寄了一封如下的信件:
- Memoirs Found in a Bathtub
- Snow Crash
- Ghost World
同时,他也要求你按照上面的顺序来阅读这些书,他想和你探讨关于这些书的内容。
在YAML中,这些有顺序的列表(list)叫做序列(sequence)。序列包括了一组有顺序的数据,当你在程序中载入这个序列,它们的顺序保持不变。
在很多比较灵活的语言中,你可以用指定索引的方式访问这个序列及其中的值。以0开头的表示这个序列的第一项。
在PHP, Perl, 或 Ruby中,可以这样:
print $book_list[0];
打印结果如下:
Memoirs Found in a Bathtub
这也是上面书籍列表的第一项。
其他列表
列表(Lists)可以包括各种数据:
---
- 1 # Numbers
- Snow Crash # Strings
- 2003-07-24 # Dates
上面的列表以三个"-"开头,这三个"-"是文档分割符(document separator),它表示了一段YAML文档的开始。当然,你也可以划分多个文档,比如:
---
- Harry Potter and the Prisoner of Azkaban
- Harry Potter and the Goblet of Fire
- Harry Potter and the Order of the Phoenix
---
- Memoirs Found in a Bathtub
- Snow Crash
- Ghost World
第二分钟:一个简单的字典
当你沉浸在阅读 Harry Potter 时,你的朋友又寄来了新的列表,这次列表包括了作者的名字:
Stanislaw Lem: Memoirs Found in a Bathtub
Neal Stephenson: Snowcrash
Daniel Clowes: Ghost World
上面的字典没有顺序,但是每个作者都对应一本书的名字。你的朋友希望你可以根据作者找到你想要的书。(注意前面没有"-")
在YAML中,这样的字典结构称为 map,map通常用来存放成对的数据,冒号左面的称为key,右面的叫做value。
key 用作从map中取数据的索引。
在PHP 或 Ruby中,可以这样写:
print $books_by_author['Daniel Clowes'];
将打印如下内容:
Ghost World
Sequence中的Map
你的朋友寄给你了一份更新的列表,包括了作者,书名,并且有一定的顺序,希望你能按照这个顺序来阅读。
---
- Stanislaw Lem: Memoirs Found in a Bathtub
- Neal Stephenson: Snowcrash
- Daniel Clowes: Ghost World
上面的序列中,每一项都是一个map,当一种集合(collection )包括另一种集合时,称作嵌套(nesting)。
第三分钟:邮箱里的东西
第三分钟我们先放慢一下速度,老师让你朋友这么打扰你我想过不多久你肯定会被气疯的。
冉我们来看看你的信箱。你住在一个公寓里,你的信箱只有一个小口可以投信,旁边是其他的几百个信箱。
你检查一下自己的信箱发现了五封信。两封是给你的邻居Jim O'Connor的,一封是给一个叫做"Hank Bros.: the Car Wash!"的公司的,其他的两封信是你自己的。
你打算对自己邮箱里多出来的信进行投诉,你打算给邮局发送一封信,让他们看看这给你带来了多大的麻烦。
你开始了一个新的YAML文档,里面包括今天的日期,和你的信箱里的信件:
---
date: 2003-07-25
letters to:
"Hank Bros.: the Car Wash!": 1
Jim O'Connor: 2
Myself: 2
这个例子里,一个map嵌套了另一个map,第一个MAP的key是,它的值是letters to 一个被嵌套的MAP,第二个MAP是缩进排列的。
内容导航
- 第1页:5分钟认识YAML
- 第2页:5分钟认识YAML(2)


















文章评论
共有 位CH网友发表了评论 查看完整内容