﻿<?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-passyt-随笔分类-编程语言之Ruby</title><link>http://www.blogjava.net/passyt/category/15703.html</link><description>&lt;/br&gt;&lt;font color="#6faf30" &gt;没有做不到只有想不到&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;a href="javascript:window.external.AddFavorite('http://www.blogjava.net/passyt/','与笑凌的博客')"&gt;&lt;font color="#6faf30"&gt;加入收藏夹&lt;/font&gt;&lt;/a&gt;
&lt;font color="#6faf30" size="1"&gt;在线人数:&lt;script src=http://fastonlineusers.com/online.php?d="passyt"&gt;&lt;/script&gt;人&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:58:13 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:58:13 GMT</pubDate><ttl>60</ttl><item><title>玩玩ruby之路在脚下——新手入门篇</title><link>http://www.blogjava.net/passyt/archive/2006/10/08/73882.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sun, 08 Oct 2006 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/10/08/73882.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/73882.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/10/08/73882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/73882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/73882.html</trackback:ping><description><![CDATA[    终于下定决心，学习ruby了，对这种新的语言感到很是兴奋。压抑住内心的喜悦简单介绍一下它的下载安装方式。<br />（1）下载地址：<br />    http://www.rubyonrails.org/down<br />    我使用的系统是windows，自然是选择<a href="http://rubyforge.org/frs/?group_id=167">Windows installer</a><br />    ruby在我看来很多地方都不太成熟，就拿安装方式来说，缺少图形化的指引界面，据说以前的安装方式更加愚蠢，还好有了RubyGems的出现，一切变得有些简单了。<br />（2）安装<br />    1.安装ruby<br />        最直接的安装方式了，一直next到最后结束为止（最新的版本是 1.8.4 (2006-04-14)）。<br />    2.安装RubyGems<br />        在命令行中运行“ruby setup.rb”即可<br />    3.安装rails<br />        有了rubygems的帮助，安装rails就变得简单些了。启动命令行窗口，输入“gem install rails –remote”，剩下的时间就是等待，由于这是采用在线安装，所以安装的速度就取决于你的网速了，呵呵。<br />    学java时就习惯了操作dos窗口，所以对这种往往要操作命令行的方式并没有太大的排斥，倒是那些.net的新手会有些不适应，毕竟一个新的平台还需要很多的人来支持，想当初java的使用往往也是通过操作命令行的。<br /><br />（3）简单的使用一下ruby<br />    装完了之后，你一定和我一样迫不及待的想尝试一下ruby的魅力所在。但是先不要急，首先确认一下ruby是否已经真正的安装成功。启动命令行，输入“ruby -v”，如果得到的信息类似如下：<br />    <font color="#ff1493">ruby 1.8.4 (2006-04-14) [i386-mswin32]<br /></font>说明你的系统中已经可以使用ruby了。<br />    好的，让我们来初步接触一下ruby。这个时候大多数人想到的是写一个hello,world的程序了解一下ruby的基本语法，呵呵，其实不用的，在命令行中输入：<br />    <font color="#ff1493">ruby<br />    print "hello,world!"<br />    ^D</font><br />这个时候就可以见到大家熟悉的"hello,world"了。发现了ruby的神奇了吧，不错，ruby作为一种脚本语言具有很独特的魅力。当然了，你也何以定制自己的ruby程序的，新建一个文件，取名为test.rb,输入以下内容：<br />        <font color="#ff1493">print("测试")</font><br />    好了，将命令行转至test.rb所在的目录，输入test，就可以看到ruby输出中文"测试"了。<br />    结束了无聊的事情之后，让我们开始真正的了解ruby，结合自己的所学，这里重点介绍一下ruby和java在语法上的不同:<br />    &lt;1&gt;字符串：<br />        java中的字符串一律用""来表示，''只是用来描述字符的，在ruby中""和''都是来表示字符串的，所不同的是""所表示的字符串会经过转义处理，比如print "\n测试"，输出的结果是：<br /><font color="#ff1493"><br />    测试</font><br />而print '\n测试',输出的结果是：<br /><font color="#ff1493">    \n测试</font><br />从上面的代码可以简单看出在""中"\n"被用作了换行，而在''中"\n"被作为了一般的字符串处理。<br />    &lt;2&gt;变量作用域的声明:<br />    &lt;3&gt;特殊的数组:<br />    java中的数组元素类型必须是一样的，在ruby中，他们可以是不一样的。比如可以这样定义一个数组：<font color="#ff1493"><br />    a=[2000," Allex", true,"50"] </font><br />    数组元素的引用也很特别，a[0]很显然吧，那么a[0,2]呢，还有a[0..2]呢，呵呵，写一段代码测试一下哈：<br />    <font color="#ff1493">print a[0,2]                <font color="#000000">结果是：        2000allex<br />    <font color="#ff1493">print a[0..2]                </font></font></font><font color="#ff1493"><font color="#000000">结果是：        2000allextrue<br />    a[0,2]相当于substring,但是又和java中的substring不一样，它的使用和oracle中的substr是完全一样的，后面的2指子串的长度；a[0..2]意思是指从0到2的元素，呵呵，有点神奇吧，还有更神奇的事情呢，a[-1]是什么呢？呵呵，测试发现a[-1]打出来的是50,有此可见，ruby中对数组的引用可以采用负数，区别是反向引用，这为我们有时编程带来了极大的便利。那么这种引用方式是否会避免让人深恶痛绝的越位异常呢，写段代码测试先：<br />    <font color="#ff1493">print a[4]</font>             结果是:    nil<br />    <font color="#ff1493">print a[-5]</font>                结果是：   nil <br />    这里打印的nil就是和java中的null是一个意思呀，完全明白了吧，也发生了让人讨厌的越位异常，55～～<br />    &lt;4&gt;</font></font><font color="#ff1493"><font color="#000000">哈希表<br />    哈希表作为一种极为常见的数据形式自然是得到了ruby的支持，写段代码简单说明下：<br />    </font>h = {1 =&gt; 2, "2" =&gt; "4"}<br />    print h[1]<br />    print h["2"]<br />    pring h[2]<br /></font><font color="#ff1493"><font color="#000000">打印出的结果是：24nil，所以千万不要搞混了，[]中的是key,不要和数组混淆了。<br />（4）ruby的神奇之处：<br />    &lt;1&gt;万物皆对象：<br />        和java中的基本类型不一样的是，ruby中的所谓基本类型也是对象（具有属性和行为），举个例子，-1在java中是基本类型，为了获得它的绝对值，需要如下调用Math.abs(-1)，这里的处理完全是一种非对象的方式，在ruby中这些“基本类型”也是对象，它们和其它的对象没有任何区别，因此作为对象的-1完全有理由知道自己的绝对值，哈哈，所以如下调用-1.abs()是完全正确的。<br />    &lt;2&gt;聪明的ruby<br />        在java中如果要把"abs"翻倍成"absabs",需要比较复杂的逻辑，而在ruby中只需"abs"*2即可。<br />    &lt;3&gt;超长的数字支持能力<br />        ruby可以处理的数字长度惊人，写个例子描述一下哈：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">def jiecheng(n)<br />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> n</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(128, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(128, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />        n</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">jiecheng(n</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(128, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)<br />    end<br />end<br /></span><span style="color: rgb(0, 0, 255);">print</span><span style="color: rgb(0, 0, 0);"> jiechen(</span><span style="color: rgb(128, 0, 0);">700</span><span style="color: rgb(0, 0, 0);">)</span></div>这里是计算700的阶乘，显示的结果如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">24220401247502721798678750938123522185909833857292072994506796649299381602156474</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">20444519051666484819249321456671497049842327525093874817343838393757631459228450</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">82849997227127414016031105783055846363633712407933244782073928110103711266538753</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">71807902575779192731082629169047504052350550600840122194928923756351362966220200</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">23178109619818046179906897450420548912610870589088056503913584562211037693288782</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">96090019507413099979903597071143627933909429203286626049637582546142772755571000</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">30077529061414706395743900249885149142644498650064588732269519418995459703339103</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">51588559232940829569276986080222200289966128343931630028789203382654749603473516</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">31476526277225717115468671686281418472874118714793634950165319745745566041313450</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">60491220449470526233846820888647906733095692923842156117880142749549059141483623</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">03226200246816441301934846080254998647325270606104512088058712293349862185399243</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">30905429957638171880624723819523260464261432989407063616375367209123275161237834</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">82738407578735677175328792425183371195406029436094116293490095660437208367374010</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">90882392975031224612531245642687296717053747734506443314924558119560479901478736</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">20955692516151773711039975473055185406632842001472865789628693652378708020647632</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">71571364413187734327510072631080569582516938112809572432024601571117786174726837</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">61623869704457588005158037495665069625778930898095725794710701639238231528115579</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">61912028737868923893433519850866593391725714397527770759059751198934506870173594</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">01696725618647131071150167473689926901160826337621723466889698408625172643840000</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">00000000000000000000000000000000000000000000000000000000000000000000000000000000</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">00000000000000000000000000000000000000000000000000000000000000000000000000000000</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">0000000000</span></div><br />（5）ruby之根本：<br />    Ruby是一种简便快捷的面向对象编程的脚本语言.Ruby可以(像Perl一样)进行文本处理及系统管理,其功能十分丰富.同时,Ruby简单易懂,便于扩充.<br />    Ruby有下列特点.<br />    &lt;1&gt;解释器 <br />        Ruby是解释型语言,因此执行程序时无需编译.<br />    &lt;2&gt;变量无类型(动态地确定类型) <br />        Ruby的变量可以接收各种类型的数据,因此没有必要担心变量类型的问题.另一方面,这弱化了编译检查的功能.<br />    &lt;3&gt;无需声明变量 <br />        Ruby中无需声明变量即可使用.可以根据变量名分辨变量的种类(局部变量,全局变量,实例变量等).<br />    &lt;4&gt;内存管理无需用户干预 <br />        Ruby自动进行内存管理.解释器内置的垃圾回收器会自动回收不再使用的对象.<br />    &lt;5&gt;一切都是对象 <br />        从一开始Ruby就被设计成为纯粹的面向对象语言.包括整数这种基本的数据类型在内所有数据都被看是对象,进而得到统一的处理.<br />    &lt;6&gt;类，继承，方法 <br />        Ruby当然具有面向对象语言的基本功能,包括类，继承和方法等.<br />    &lt;7&gt;特殊方法 <br />        可向某对象添加方法.例如，可以把GUI按钮被按下时的动作作为方法记述下来，还可以用它来进行原型库（prototypebase）的面向对象编程（只要您想这样的话）.<br />    &lt;8&gt;使用模块进行糅合（Mix-in） <br />        Ruby认为多重继承会导致问题复杂化,因此故意舍弃了多重继承,但可以使用模块超越类的界限来共享数据和方法等.这就是"Mix-in"糅合功能<br />    &lt;9&gt;迭代器 <br />        迭代器功能可以将流程控制结构抽象化.<br />    &lt;10&gt;闭包 <br />        可以将某过程片段对象化,对象化后的该过程片段就称作闭包.<br />    &lt;11&gt;功能强大的字符串操作／正则表达式 <br />        以Perl为样板创造出了功能强大的字符串操作和正则表达式检索功能.<br />    &lt;12&gt;超长整数 <br />        内置了处理超长整数的功能,所以只要内存允许就可以计算非常大的整数.例如计算400的阶乘等也轻而易举.<br />    &lt;13&gt;异常处理功能 <br />        异常处理功能可以使您编写代码处理异常情况.<br />    &lt;14&gt;可以直接访问OS <br />        Ruby可以使用（UNIX的）绝大部分的系统调用.即使单独使用Ruby也可以进行系统编程.<br />    &lt;15&gt;动态加载 <br />        若OS支持的话,可以在运行时读入对象文件.<br /></font></font><font color="#ff1493"><font color="#000000"><br />本篇完，敬请关注下篇：ruby on rails<br /></font></font><img src ="http://www.blogjava.net/passyt/aggbug/73882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-10-08 18:07 <a href="http://www.blogjava.net/passyt/archive/2006/10/08/73882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>