2007-08-25

5分钟认识YAML

来源: 作者: 评论 0 条
 

译: 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
共2页: 上一页 1 [2] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:Ubuntu下用MONO执行C#程序  
下一篇:轻松应对JSP连接MySQL数据库问题
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号