﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-最爱Java-随笔分类-《Ruby on Rails》入门经典</title><link>http://www.blogjava.net/zhengzhili/category/37135.html</link><description>书山有路勤为径，学海无涯苦作舟</description><language>zh-cn</language><lastBuildDate>Sat, 10 Jan 2009 14:52:00 GMT</lastBuildDate><pubDate>Sat, 10 Jan 2009 14:52:00 GMT</pubDate><ttl>60</ttl><item><title>笔记五. 构建简单的Rails应用程序</title><link>http://www.blogjava.net/zhengzhili/archive/2009/01/10/250829.html</link><dc:creator>Brian</dc:creator><author>Brian</author><pubDate>Sat, 10 Jan 2009 13:25:00 GMT</pubDate><guid>http://www.blogjava.net/zhengzhili/archive/2009/01/10/250829.html</guid><wfw:comment>http://www.blogjava.net/zhengzhili/comments/250829.html</wfw:comment><comments>http://www.blogjava.net/zhengzhili/archive/2009/01/10/250829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhengzhili/comments/commentRss/250829.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhengzhili/services/trackbacks/250829.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 5.1 访问用户提供的数据&nbsp;&nbsp;&nbsp;&nbsp;新建一个应用程序，并建立一个Look的控制器。&nbsp;&nbsp;&nbsp;&nbsp;app\controllers\look_controller.rbclass&nbsp;LookController&nbsp;&lt;&nbsp;ApplicationControllerdef&nbsp;at...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhengzhili/archive/2009/01/10/250829.html'>阅读全文</a><img src ="http://www.blogjava.net/zhengzhili/aggbug/250829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhengzhili/" target="_blank">Brian</a> 2009-01-10 21:25 <a href="http://www.blogjava.net/zhengzhili/archive/2009/01/10/250829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记四. 欢迎进入Rails</title><link>http://www.blogjava.net/zhengzhili/archive/2009/01/09/250737.html</link><dc:creator>Brian</dc:creator><author>Brian</author><pubDate>Fri, 09 Jan 2009 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/zhengzhili/archive/2009/01/09/250737.html</guid><wfw:comment>http://www.blogjava.net/zhengzhili/comments/250737.html</wfw:comment><comments>http://www.blogjava.net/zhengzhili/archive/2009/01/09/250737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhengzhili/comments/commentRss/250737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhengzhili/services/trackbacks/250737.html</trackback:ping><description><![CDATA[4.1 创建应用程序框架<br />
&nbsp;&nbsp;&nbsp;&nbsp;使用rails创建应用程序框架，只要在创建框架所在的目录下输入rails applicationName命令即可，如需要创建名为first应用程序的框架，则输入rails first即可。rails会自动帮你创建一大堆目录和所必须要的文件。这些目录和文件的用户我们以后一一再说明。<br />
&nbsp;&nbsp;&nbsp;&nbsp;启动rails配套的Web服务器，使用ruby script/server命令。记得这个命令要在first目录下运行。<br />
<br />
4.2 模型-视图-控制器架构<br />
&nbsp;&nbsp;&nbsp;&nbsp;关于模型-视图-控制器的架构觉得实在没什么可说的，老套了不要老套了。直接看实现：<br />
&nbsp;&nbsp;&nbsp;&nbsp;1. 使用ruby script/generate controller Hello命令。这个命令会创建一个hello的控制器。看命令的交互提示就知道其创建了3个文件，而hello_control.rb就是Hello控制器的控制文件啦。<br />
&nbsp;&nbsp;&nbsp;&nbsp;2. 查看hello_control.rb看代码，可得知其继承与ApplicationController文件。我们给这个文件添加一个动作，将文件修改成如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HelloController&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;ApplicationController<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />def&nbsp;there<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;这样就有一个there的动作了。启动服务器，查看<a href="http://localhost:3000/hello/there">http://localhost:3000/hello/there</a>。<br />
&nbsp;&nbsp;&nbsp;&nbsp;3. 服务器会提示"Template is missing"，这是正常的。因为有了动作，没有视图嘛！默认的视图是同名字的.rhtml文件，存放在app\views\hello目录下，故there动作缺少一个there.rhtml文件。<br />
&nbsp;&nbsp;&nbsp;&nbsp;4.创建app\views\hello\there.rhtml文件如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Using&nbsp;Ruby&nbsp;on&nbsp;Rails</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Welcome&nbsp;to&nbsp;Ruby&nbsp;on&nbsp;Rails</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;your&nbsp;first&nbsp;Ruby&nbsp;on&nbsp;rails&nbsp;application.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Using&nbsp;this&nbsp;application,&nbsp;you've&nbsp;been&nbsp;introduced&nbsp;to<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controllers,&nbsp;actions,&nbsp;and&nbsp;views.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Not&nbsp;bad&nbsp;for&nbsp;a&nbsp;first&nbsp;example!<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;在启动服务器，查看<a href="http://localhost:3000/first/there">http://localhost:3000/first/there</a>，就能看见网页啦！<br />
&nbsp;&nbsp;&nbsp;&nbsp;5. 回顾一下，有hello控制器接受request，并找到相应的动作there，动作在转发给视图there.rhtml。<br />
&nbsp;&nbsp;&nbsp;&nbsp;6. 在视图中，也可以使用Ruby代码。如在there.rhtml中添加&lt;%=2+3%&gt;这样的代码，就会显示5；甚至可以添加&lt;%3.times do%&gt;Yes!&lt;br/&gt;&lt;%end%&gt;这样的执行命令。<br />
<br />
<br />
4.3 将数据从动作传送给视图<br />
&nbsp;&nbsp;&nbsp;&nbsp;1. 在there代码块中，修改为<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">def&nbsp;there<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@time_now&nbsp;=&nbsp;Time.now<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;2. there.rhtml中添加如下一段代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">The&nbsp;time&nbsp;is&nbsp;now&nbsp;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5">=@</span><span style="color: #000000; background-color: #f5f5f5">time_now</span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000">.</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;3.再次查看<a href="http://localhost:3000/hello/there">http://localhost:3000/hello/there</a>，@time_now的值已经显示在页面上了。<br />
<br />
4.4 转义敏感文本<br />
&nbsp;&nbsp;&nbsp;&nbsp;对于&lt;、&gt;、@、&amp;等文本，在html代码中需要使用特殊的符号代替才能正确显示出来。在Rails中，可使用h方法对其转义，如&lt;%=h("I say that here&lt;there")%&gt;。<br />
<br />
4.5 添加第二个动作<br />
&nbsp;&nbsp;&nbsp;&nbsp;1.根据前面说的，那么只要添加n个动作，就能处理不同的事情了。如创建一个Goto的控制器：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;GotoController&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;ApplicationController<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />def&nbsp;work<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />def&nbsp;lunch<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;work.rhtml:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Using&nbsp;Two&nbsp;Views</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Working&nbsp;With&nbsp;Two&nbsp;Views</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;your&nbsp;first&nbsp;Ruby&nbsp;on&nbsp;rails&nbsp;application.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Get&nbsp;back&nbsp;to&nbsp;work!</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;an&nbsp;active&nbsp;view&nbsp;in&nbsp;a&nbsp;ruby&nbsp;on&nbsp;Rails&nbsp;appliaction.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;lunch.rhtml<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Using&nbsp;Two&nbsp;Views</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Working&nbsp;With&nbsp;Two&nbsp;Views</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;your&nbsp;first&nbsp;Ruby&nbsp;on&nbsp;rails&nbsp;application.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Lunch&nbsp;Time!</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;an&nbsp;active&nbsp;view&nbsp;in&nbsp;a&nbsp;ruby&nbsp;on&nbsp;Rails&nbsp;appliaction.<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;分别访问<a href="http://localhost:3000/goto/work">http://localhost:3000/goto/work</a>和<a href="http://localhost:3000/goto/lunch">http://localhost:3000/goto/lunch</a>。<br />
&nbsp;&nbsp;&nbsp;&nbsp;2.现在我们将work这个动作改成如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">def&nbsp;work<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Time.now.hour&nbsp;==&nbsp;12<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render(:action&nbsp;=&gt;&nbsp;:lunch)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;这样当12点的时候，访问<a href="http://localhost:3000/goto/work">http://localhost:3000/goto/work</a>就会出现lunch.rhtml的页面了。通过render可以选择呈现的页面。<br />
&nbsp;&nbsp;&nbsp;&nbsp;3.实际上，render还可以直接调用模板，如：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">def&nbsp;work<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Time.now.hour&nbsp;==&nbsp;20<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render(:action&nbsp;=&gt;&nbsp;'d:\rubydev\first\app\views\goto\lunch.rhtml')<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/zhengzhili/aggbug/250737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhengzhili/" target="_blank">Brian</a> 2009-01-09 20:44 <a href="http://www.blogjava.net/zhengzhili/archive/2009/01/09/250737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记三.  类和对象</title><link>http://www.blogjava.net/zhengzhili/archive/2009/01/07/250407.html</link><dc:creator>Brian</dc:creator><author>Brian</author><pubDate>Wed, 07 Jan 2009 13:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhengzhili/archive/2009/01/07/250407.html</guid><wfw:comment>http://www.blogjava.net/zhengzhili/comments/250407.html</wfw:comment><comments>http://www.blogjava.net/zhengzhili/archive/2009/01/07/250407.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhengzhili/comments/commentRss/250407.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhengzhili/services/trackbacks/250407.html</trackback:ping><description><![CDATA[3.1 类的基本写法<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们直接看代码，比较容易说明：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Animal<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;attr_reader&nbsp;:color<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;attr_writer&nbsp;:color<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color)<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;color<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />animal&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Animal.</span><span style="color: #0000ff">new</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">red</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;new&nbsp;animal&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;animal.color<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />animal.color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">blue</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;new&nbsp;animal&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;animal.color</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;上述代码，有程序经验的人基本就能了解大概了。第一行class Aminal是申明了一个叫做Animal的类。这个类有一个initialize的方法，实际上这个方法就是一个构造器，11行代码中的new一个实例，实际上调用的就是initialize方法。请注意这个构造器有一个参数，根据实际情况，可以没有参数或者多个参数。在构造器中，也就是第6行，@color = color，@color叫做实例对象，一个实例就有一个这样的对象，用于保存实例数据。第2，3行建立了一个color的属性，这个属性可以访问@color实例对象，从代码解释来看，这个color对象可读可写，所以在代码12，13行分别对color属性进行了读写。实际上，对于可读可写的属性，只需要使用attr_accessor即可。故代码的第2，3行可合并成attr_accessor :color即可。<br />
<br />
3.2&nbsp; 类的继承<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby中类的继承表示为&lt;，如下面的代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Animal<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;@color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Dog&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;Animal<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color,&nbsp;sound)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">(color)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@sound&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sound<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_sound<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;@sound<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />dog&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Dog.</span><span style="color: #0000ff">new</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">brown</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">Bark</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;new&nbsp;dog&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;dog.get_color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;new&nbsp;dog&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;dog.get_sound</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;上述代码表示了Dog继承了Animal类，并在构造器中使用了Ruby内置的super方法。<br />
<br />
3.3 理解Ruby中的对象访问<br />
&nbsp;&nbsp;&nbsp;&nbsp;公共方法(publilc method)----可以在代码的任何地方调用这类方法。没有任何限制。也是Ruby默认的访问级别。<br />
&nbsp;&nbsp;&nbsp;&nbsp;受保护方法(protected method)----只能在定义这些方法的类的对象内部或是从这个类派生出来的类的对象内部调用这类的方法，也就是说只有&#8220;家族成员&#8221;才能访问。<br />
&nbsp;&nbsp;&nbsp;&nbsp;私有方法(private method)----只能在当前对象内部调用这类方法。这是所有方法中限制最严格的。</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Animal&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color)<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;color<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_color<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;@color<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_feet<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;four<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_head<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;one<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000"><br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_eyes<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;two<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;上述代码中，从第6行开始声明是public访问修饰符，说明从第6行一下都是public访问级别，直到碰到下一个访问修饰符，即第11行的protected。故可得知，get_feet和get_head方法是protected，而get_eyes则是private的。<br />
<br />
3.4 重写方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby中也可重写方法，即派生类重新定义方法。如：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Animal<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;@color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Dog&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;Animal<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color,&nbsp;sound)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">(color)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@sound&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sound<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">blue</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
<br />
3.5 创建类变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;在变量名之前加@可以创建实例变量，加@@则就可以创建类变量。类的所有实例都共享一个类变量。通过下面代码可以学习什么是类变量：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; height: 301px; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Animal<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@@number_animals&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize(color)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;color<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@number_animals&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get_number<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;@@number_animals<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />cat&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Animal.</span><span style="color: #0000ff">new</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">red</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;cat.get_number<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />dog&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Animal.</span><span style="color: #0000ff">new</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">blue</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;dog.get_number<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
3.6 声明类方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;声明类方法可以不用实例化类而直接访问类方法。类方法的声明只要类名+.+方法名即可。如：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Mathematics<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;Mathematics.add(operand_one,&nbsp;operand_two)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;operand_one&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;operand_two<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1&nbsp;+&nbsp;2&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Mathematics.add(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">).to_s</span></div>
<br />
3.7 创建模块<br />
&nbsp;&nbsp;&nbsp;&nbsp;当你使用大量类的时候，可能想将这些类分组成模块。这样就能方便使用大量的类。创建模块要使用module关键字。<br />
Mathematics.rb<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">module&nbsp;Mathematics<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;Mathematics.add(operand_one,&nbsp;operand_two)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;operand_one&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;operand_two<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
Sentence.rb<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">module&nbsp;Sentence<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;Sentence.add(operand_one,&nbsp;operand_two)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;operand_one&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;operand_two<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end</span></div>
usemodules.rb<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />include<span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">Mathematics.rb</span><span style="color: #000000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />include&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">Sentence.rb</span><span style="color: #000000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">2&nbsp;+&nbsp;3&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Mathematics.add(</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">).to_s</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;上述示例中，Mathematics模块的add方法是两个数相加，Sentence模块的add方法是两个单词用单词连接。add方法看上去很像类方法，但实际和类不同，在Ruby中不能使用模块创建实例(也就是对象)。看usemodules的调用方法。<br />
&nbsp;&nbsp;&nbsp;&nbsp;除了使用include，还可使用require更简洁，如: require 'mathematics'。<br />
&nbsp;&nbsp;&nbsp;&nbsp;当然类也可以存储进模块中，如：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">module&nbsp;Mathematics<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Adder<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;Adder.add(operand_one,&nbsp;operand_two)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;operand_one&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;operand_two<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">2&nbsp;+&nbsp;3&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Mathematics::Adder.add(</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">).to_s<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;注意，需要使用范围解析操作符(::)访问模块中的类方法。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
3.8 创建混合插入<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">module&nbsp;Adder<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;add(operand_one,&nbsp;operand_two)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;operand_one&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;operand_two<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />end<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />module&nbsp;Subtracter<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;subtract(operand_one,&nbsp;operand_two)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;operand_one&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;operand_two<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />end<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Calculator<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;Adder<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;Subtracter<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />end<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />calculator&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calculator.</span><span style="color: #0000ff">new</span><span style="color: #000000">()<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">2&nbsp;+&nbsp;3&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;calculator.add(</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">).to_s<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<img src ="http://www.blogjava.net/zhengzhili/aggbug/250407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhengzhili/" target="_blank">Brian</a> 2009-01-07 21:01 <a href="http://www.blogjava.net/zhengzhili/archive/2009/01/07/250407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记二. 条件、循环、方法和块</title><link>http://www.blogjava.net/zhengzhili/archive/2009/01/06/250191.html</link><dc:creator>Brian</dc:creator><author>Brian</author><pubDate>Tue, 06 Jan 2009 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/zhengzhili/archive/2009/01/06/250191.html</guid><wfw:comment>http://www.blogjava.net/zhengzhili/comments/250191.html</wfw:comment><comments>http://www.blogjava.net/zhengzhili/archive/2009/01/06/250191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhengzhili/comments/commentRss/250191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhengzhili/services/trackbacks/250191.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2.1 条件语句&nbsp;&nbsp;&nbsp;&nbsp;Ruby中的条件语句中的关键字为if，else，elsif(注意不是elseif)，unless和case语句。语法很简单，看下面两段代码就能学会了。temperature&nbsp;=&nbsp;76if&nbsp;temperature&nbsp;&gt;&nbsp;65&nbsp;&amp;&amp;&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhengzhili/archive/2009/01/06/250191.html'>阅读全文</a><img src ="http://www.blogjava.net/zhengzhili/aggbug/250191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhengzhili/" target="_blank">Brian</a> 2009-01-06 22:20 <a href="http://www.blogjava.net/zhengzhili/archive/2009/01/06/250191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记一. Ruby简介</title><link>http://www.blogjava.net/zhengzhili/archive/2009/01/06/249980.html</link><dc:creator>Brian</dc:creator><author>Brian</author><pubDate>Tue, 06 Jan 2009 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/zhengzhili/archive/2009/01/06/249980.html</guid><wfw:comment>http://www.blogjava.net/zhengzhili/comments/249980.html</wfw:comment><comments>http://www.blogjava.net/zhengzhili/archive/2009/01/06/249980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhengzhili/comments/commentRss/249980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhengzhili/services/trackbacks/249980.html</trackback:ping><description><![CDATA[1.1 安装Ruby和Rails<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从<a href="http://rubyinstaller.rubyforge.org">http://rubyinstaller.rubyforge.org</a>下载最新的Ruby安装包，并单击安装包就搞定了。然后在命令行模式下输入gem install rails --remote网络安装Rails。至于使用--include-dependencies或本地安装，可查看相关资料。<br />
<br />
1.2 创建第一个Web应用程序<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 先设置工作目录为d:\rubydev目录,并将第一个Web应用程序命名为hello，则输入命令行rails hello。<br />
<img height="707" alt="" src="http://www.blogjava.net/images/blogjava_net/zhengzhili/Ruby/Ch01/1.1.jpg" width="645" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp; 进入hello目录，使用ruby script/gengerate controller App新建一个名为App的控制器。<br />
<img height="223" alt="" src="http://www.blogjava.net/images/blogjava_net/zhengzhili/Ruby/Ch01/1.2.jpg" width="644" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. .rb就是Ruby文件。打开app_controller.rb文件，可以看见：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class AppController &lt; ApplicationController<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个控制器派生自ApplicationController基类。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.在app_controller.rb中创建动作，修改如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;AppController&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;ApplicationController<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;greeting<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;End<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />end<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;5.在ruby\hello\app\views\app\中创建greeting.rhtml文件，如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Ruby&nbsp;on&nbsp;Rails</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Yes&nbsp;it's&nbsp;working</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;6.使用ruby script/server启动内置服务器，查看<a href="http://localhost:3000/app/greeting">http://localhost:3000/app/greeting</a>，观看效果。&nbsp;<br />
<br />
1.3&nbsp;初识Ruby<br />
&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;使用puts可输出字符串，并带有换行符。如puts "Hello from Ruby"<br />
&nbsp;&nbsp;&nbsp;&nbsp;2. 注释符为#。如puts "Hello from Ruby" #Display the text!<br />
&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;使用交付工具irb，可将Ruby切换为交互性运行模式。<br />
<br />
1.4 学习Ruby文档<br />
&nbsp;&nbsp;&nbsp;&nbsp;使用ri工具，并加上所需要帮助内容的关键字。如ri puts<br />
&nbsp;&nbsp;&nbsp;&nbsp;不过还是上<a href="http://www.ruby-doc.org">www.ruby-doc.org</a>方便。<br />
<br />
1.5 在Ruby中处理数字<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby对于数字是自动处理的，且没有限制大小。更变态的是可以用下划线分割，如12_234_345，就是12234345。0b开头的为两进制数，0开头为八进制数，0x开头为十六进制数。实际上，Ruby是把数字保存为不同类型的，如整数一般为Fixnum类型，大的为Bignum类型，小数为Float类型。只不过Ruby会自动转换，无需程序员关心而已。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">puts&nbsp;</span><span style="color: #000000">12345</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">3.1415</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">31415.0e-4</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;12_345_678_654_321<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">0xddff</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;0b1111<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">0355</span></div>
<br />
1.6 在Ruby中处理字符串<br />
&nbsp;&nbsp;&nbsp;&nbsp;可以将字符串放在一对单引号或双引号中，甚至单双引号可以混用。只要配对出现就可以了。但不可双引号中出现双引号，或单引号中出现单引号，这样Ruby无法判断结尾。同时也可使用\作为转义符。如"I said \"Hello\""。<br />
&nbsp;&nbsp;&nbsp;&nbsp;使用%q(单引号)或%Q(双引号)也可以，但必须配合一个字符。如%Q/Hello World/。甚至可以省略Q，如%/Hello World/。<br />
&nbsp;&nbsp;&nbsp;&nbsp;可以使用+符号来连接字符串。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">there</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">Nice&nbsp;to&nbsp;see&nbsp;you.</span><span style="color: #000000">'</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">Q</span><span style="color: #000000">/</span><span style="color: #000000">How&nbsp;are&nbsp;you.</span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">Q</span><span style="color: #000000">!</span><span style="color: #000000">Fine,&nbsp;and&nbsp;you</span><span style="color: #000000">?!</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">q</span><span style="color: #000000">!</span><span style="color: #000000">I</span><span style="color: #000000">'</span><span style="color: #000000">m&nbsp;also&nbsp;fine,thanks.!</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">I&nbsp;have&nbsp;to&nbsp;say,&nbsp;'I&nbsp;am&nbsp;well.'</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">I'll&nbsp;also&nbsp;say,&nbsp;\</span><span style="color: #000000">"</span><span style="color: #000000">Things&nbsp;are&nbsp;fine.\</span><span style="color: #000000">""</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;print方法和puts方法相同，都是输出字符串。区别在于print方法不会自动转到下一行。需要使用换行符\n。<br />
<br />
1.7 变量的赋值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby中变量赋值格式如temperature = 34。变量名的命名要求为：以小写字母(a-z)或下划线(_)开始，后面可以跟任意数量的命名字符。命名字符可以是小写字母，大写字母，数字或下划线。但需避免保留字。Ruby保留字如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_FILE_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_LINE_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defined?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BEGIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nil&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; undef<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unless<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ensure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;until<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rescue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yield<br />
<br />
1.8 创建常量<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby中以大写字母开头的被认为是常量，Ruby也凭这个判断是否为常量。一般习惯上都全部用大写来表示常量。在Ruby中，常量是允许通过赋值方式来改变常量的值的：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONST = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONST = 2<br />
&nbsp;&nbsp;&nbsp;&nbsp; 但每次改变常量都会收到一个警告：constants.rb:2: warning: already initialized constant CONST<br />
<br />
1.9 在双引号字符串中内插变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;比较以下代码的运行结果就知道啥意思了<img src="/CuteSoft_Client/CuteEditor/images/emsmilep.gif" align="absMiddle" border="0"  alt="" /></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">temperature&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">36</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;temperature&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;String(temperature)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;temperature&nbsp;is&nbsp;#{temperature}.</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />temperature&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;temperature&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;temperature&nbsp;is&nbsp;#{temperature}.</span><span style="color: #000000">"</span></div>
<p><br />
1.10 从命令行读取文本<br />
&nbsp;&nbsp;&nbsp;&nbsp;内置的gets方法可以从命令行读取用户的输入，并在默认情况下把读入的文本赋值给预定义的变量$_。但gets方法会保留用户输入的字符串末尾所加的终止换行符。所以需要内置方法chomp方法，改方法会去除字符串变量$_后面的换行符。但chomp方法只会去除$_变量的换行符。</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">print&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Please&nbsp;enter&nbsp;the&nbsp;temperature:</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />gets<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />chomp<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;temperature&nbsp;is&nbsp;#{$_}.</span><span style="color: #000000">"</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;gets方法能把输入值赋予任何一变量，但chomp只能去除$_变量的换行符。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">print&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Please&nbsp;enter&nbsp;the&nbsp;temperature:</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />temperature&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gets<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />$_&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;temperature<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />chomp<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />temperature&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;$_<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;temperature&nbsp;is&nbsp;#{$_}.</span><span style="color: #000000">"</span></div>
<br />
1.11 在Ruby中创建符号<br />
&nbsp;&nbsp;&nbsp;&nbsp;符号以冒号(:)开头，如:temperature。<br />
<br />
1.12 Ruby中的操作符<br />
<table style="table-layout: fixed; width: 383pt; border-collapse: collapse" cellspacing="0" cellpadding="0" width="510" border="0">
    <tbody>
        <tr style="height: 13.5pt" height="18">
            <td style="width: 168pt; height: 13.5pt" width="224" height="18">操作符</td>
            <td style="width: 215pt" width="286">描述</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">[]</td>
            <td>数组引用</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">[]=</td>
            <td>数组元素集</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">**</td>
            <td style="border-top: medium none">指数运算</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">!</td>
            <td>去反</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">~</td>
            <td>取补</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">+</td>
            <td>一元加</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">-</td>
            <td>相减</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">*</td>
            <td>相乘</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">/</td>
            <td>相除</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">%</td>
            <td>取模</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">+</td>
            <td>相加</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">-</td>
            <td>相减</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&gt;&gt;</td>
            <td>右移</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&lt;&lt;</td>
            <td>左移</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">&amp;</td>
            <td style="border-top: medium none">逻辑与</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">^</td>
            <td>逻辑异或</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">|</td>
            <td>逻辑或</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">比较操作符</td>
            <td style="border-top: medium none">　</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">&lt;=</td>
            <td>小于等于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&lt;</td>
            <td>小于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&gt;</td>
            <td>大于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&gt;=</td>
            <td>大于等于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">相等和模式匹配操作符</td>
            <td style="border-top: medium none">　</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">&lt;=&gt;</td>
            <td>小于，等于，大于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">==</td>
            <td>等于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">===</td>
            <td>在case语句的when子句中测试相等</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">!=</td>
            <td>不等于</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&nbsp;=~</td>
            <td>正则表达式模式匹配</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">&amp;&amp;</td>
            <td style="border-top: medium none">逻辑与</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">||</td>
            <td style="border-top: medium none">逻辑或</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">..</td>
            <td>含最大值的范围</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&#8230;</td>
            <td>不含最大值的范围</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">?</td>
            <td>三重条件</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">:</td>
            <td>否则</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">赋值</td>
            <td style="border-top: medium none">　</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">=</td>
            <td>简单赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">%=</td>
            <td>取模并赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">/=</td>
            <td>相除并赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&nbsp;-=</td>
            <td>相减并赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&nbsp;+=</td>
            <td>相加并赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">&nbsp;*=</td>
            <td>相乘并赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">**=</td>
            <td>指数运算并赋值</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">defined?</td>
            <td>如果符号已定义，则为真</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">not</td>
            <td>逻辑非</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">and</td>
            <td style="border-bottom: black 0.5pt solid" rowspan="2">逻辑组合</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">or</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">语句修饰符</td>
            <td style="border-top: medium none">　</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">if</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">unless</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">while</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="height: 13.5pt" height="18">until</td>
            <td>　</td>
        </tr>
        <tr style="height: 13.5pt" height="18">
            <td style="border-top: medium none; height: 13.5pt" height="18">begin/end</td>
            <td style="border-top: medium none">块表达式</td>
        </tr>
    </tbody>
</table>
<br />
1.13 操作符的优先级<br />
&nbsp;&nbsp;&nbsp;&nbsp;上面表的排列就是按照优先级排列的。<br />
<br />
1.14 使用数组<br />
&nbsp;&nbsp;&nbsp;&nbsp;1. 操作符[]可以创建一个数组。<br />
&nbsp;&nbsp;&nbsp;&nbsp;2.数组第一个索引值为0，而不是1。<br />
&nbsp;&nbsp;&nbsp;&nbsp;3.数组中可存放不同类型的数值，内置方法length可得到数组个数。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">array&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">there</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">sweetie</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array[</span><span style="color: #000000">0</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array[</span><span style="color: #000000">1</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array[</span><span style="color: #000000">2</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array.length<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Array.</span><span style="color: #0000ff">new</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array2.length<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array2[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Banana</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array2[</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">fish</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array2[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;array2[</span><span style="color: #000000">2</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array2.length</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;上述代码中，使用Array.new来创建了一个新的数组，长度为0。当给数组一个元素赋值时，如果这个元素不存在，Ruby会自动创建这个元素。且放置的元素不一定连续，如代码中给0元素赋值后，直接给2元素赋值。同时，数组中索引使用负数，这是索引会从数组的最后一个开始往前基数。在代码中，array[-1]就是3，array[-2]为2，以此类推。<br />
<br />
1.15 使用两个数组索引<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby中可以通过两个数组索引来引用数组中的元素，第一个索引值代表开始的位置，第二个值代表元素的个数。所以第一个索引成为&#8220;起点&#8221;，第二个索引成为&#8220;元素个数&#8221;：array[start, count]。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">array&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">there</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">sweetie</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array[</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">pal</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">there</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">sweetie</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array[</span><span style="color: #000000">3</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">pie</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">Now</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">is</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array[</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">the</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">time</span><span style="color: #000000">"</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">there</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">sweetie</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">]&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />array2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;array[</span><span style="color: #000000">3</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;array2</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;示例中，7，8，9行实现了插入数组的功能；10，11，12行实现了提取子数组的功能。<br />
<br />
1.16 散列表<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ruby中创建散列表使用大括号{}，如：money_i_am_owed={"Dan"=&gt;"$1,000,000","Derek"=&gt;"$500,000"}。获取散列表值如puts monoey_i_am_owed["Dan"]。<br />
<br />
1.17 使用范围<br />
&nbsp;&nbsp;&nbsp;&nbsp;用..来创建。如1..4则创建了1，2，3，4范围，可使用to_a内置方法把范围转换成数组。但1...4则会忽略最后一个元素，为1,2,3范围。同时，需要提醒的是，范围的创建是递增形式的，如(1..10).to_a是正确的，但(10..1).to_a也正确，但只能得到空数组。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">rang</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">..</span><span style="color: #000000">5</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;rang.to_a<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rang</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #000000">5</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;rang.to_a<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rang</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">alpha</span><span style="color: #000000">"</span><span style="color: #000000">..</span><span style="color: #000000">"</span><span style="color: #000000">alphe</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;rang.to_a<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;(</span><span style="color: #000000">1</span><span style="color: #000000">..</span><span style="color: #000000">10</span><span style="color: #000000">).to_a<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />puts&nbsp;(</span><span style="color: #000000">10</span><span style="color: #000000">..</span><span style="color: #000000">1</span><span style="color: #000000">).to_a</span></div>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<img src ="http://www.blogjava.net/zhengzhili/aggbug/249980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhengzhili/" target="_blank">Brian</a> 2009-01-06 15:49 <a href="http://www.blogjava.net/zhengzhili/archive/2009/01/06/249980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>