玩玩ruby之路在脚下——新手入门篇

  终于下定决心,学习ruby了,对这种新的语言感到很是兴奋。压抑住内心的喜悦简单介绍一下它的下载安装方式。(1)下载地址:
    http://www.rubyonrails.org/down
    我使用的系统是windows,自然是选择Windows installer
    ruby在我看来很多地方都不太成熟,就拿安装方式来说,缺少图形化的指引界面,据说以前的安装方式更加愚蠢,还好有了RubyGems的出现,一切变得有些简单了。
(2)安装
    1.安装ruby
       最直接的安装方式了,一直next到最后结束为止(最新的版本是 1.8.4 (2006-04-14))。
    2.安装RubyGems
       在命令行中运行“ruby setup.rb”即可
    3.安装rails
        有了rubygems的帮助,安装rails就变得简单些了。启动命令行窗口,输入“gem install rails –remote”,剩下的时间就是等待,由于这是采用在线安装,所以安装的速度就取决于你的网速了,呵呵。
    学java时就习惯了操作dos窗口,所以对这种往往要操作命令行的方式并没有太大的排斥,倒是那些.net的新手会有些不适应,毕竟一个新的平台还需要很多的人来支持,想当初java的使用往往也是通过操作命令行的。

(3)简单的使用一下ruby
    装完了之后,你一定和我一样迫不及待的想尝试一下ruby的魅力所在。但是先不要急,首先确认一下ruby是否已经真正的安装成功。启动命令行,输入“ruby -v”,如果得到的信息类似如下:
    ruby 1.8.4 (2006-04-14) [i386-mswin32]
说明你的系统中已经可以使用ruby了。
    好的,让我们来初步接触一下ruby。这个时候大多数人想到的是写一个hello,world的程序了解一下ruby的基本语法,呵呵,其实不用的,在命令行中输入:
    ruby
    print "hello,world!"
    ^D

这个时候就可以见到大家熟悉的"hello,world"了。发现了ruby的神奇了吧,不错,ruby作为一种脚本语言具有很独特的魅力。当然了,你也何以定制自己的ruby程序的,新建一个文件,取名为test.rb,输入以下内容:
        print("测试")
    好了,将命令行转至test.rb所在的目录,输入test,就可以看到ruby输出中文"测试"了。
    结束了无聊的事情之后,让我们开始真正的了解ruby,结合自己的所学,这里重点介绍一下ruby和java在语法上的不同:
    <1>字符串:
       java中的字符串一律用""来表示,''只是用来描述字符的,在ruby中""和''都是来表示字符串的,所不同的是""所表示的字符串会经过转义处理,比如print "\n测试",输出的结果是:

    测试

而print '\n测试',输出的结果是:
    \n测试
从上面的代码可以简单看出在""中"\n"被用作了换行,而在''中"\n"被作为了一般的字符串处理。
    <2>变量作用域的声明:
    <3>特殊的数组:
    java中的数组元素类型必须是一样的,在ruby中,他们可以是不一样的。比如可以这样定义一个数组:
    a=[2000," Allex", true,"50"]

    数组元素的引用也很特别,a[0]很显然吧,那么a[0,2]呢,还有a[0..2]呢,呵呵,写一段代码测试一下哈:
    print a[0,2]            结果是:      2000allex
    print a[0..2]           
结果是:      2000allextrue
    a[0,2]相当于substring,但是又和java中的substring不一样,它的使用和oracle中的substr是完全一样的,后面的2 指子串的长度;a[0..2]意思是指从0到2的元素,呵呵,有点神奇吧,还有更神奇的事情呢,a[-1]是什么呢?呵呵,测试发现a[-1]打出来的是 50,有此可见,ruby中对数组的引用可以采用负数,区别是反向引用,这为我们有时编程带来了极大的便利。那么这种引用方式是否会避免让人深恶痛绝的越 位异常呢,写段代码测试先:
    print a[4]             结果是:    nil
    print a[-5]            结果是:   nil
    这里打印的nil就是和java中的null是一个意思呀,完全明白了吧,也发生了让人讨厌的越位异常,55~~
    <4>
哈希表
    哈希表作为一种极为常见的数据形式自然是得到了ruby的支持,写段代码简单说明下:
   
h = {1 => 2, "2" => "4"}
    print h[1]
    print h["2"]
    pring h[2]
打印出的结果是:24nil,所以千万不要搞混了,[]中的是key,不要和数组混淆了。
(4)ruby的神奇之处:
    <1>万物皆对象:
       和java中的基本类型不一样的是,ruby中的所谓基本类型也是对象(具有属性和行为),举个例子,-1在java中是基本类型,为了获得它的绝对值, 需要如下调用Math.abs(-1),这里的处理完全是一种非对象的方式,在ruby中这些“基本类型”也是对象,它们和其它的对象没有任何区别,因此 作为对象的-1完全有理由知道自己的绝对值,哈哈,所以如下调用-1.abs()是完全正确的。
    <2>聪明的ruby
       在java中如果要把"abs"翻倍成"absabs",需要比较复杂的逻辑,而在ruby中只需"abs"*2即可。
    <3>超长的数字支持能力
       ruby可以处理的数字长度惊人,写个例子描述一下哈:

def jiecheng(n)
    if n==1
        1
    else
        n*jiecheng(n-1)
    end
end
print jiechen(700)

 这里是计算700的阶乘,显示的结果如下:

24220401247502721798678750938123522185909833857292072994506796649299381602156474
20444519051666484819249321456671497049842327525093874817343838393757631459228450
82849997227127414016031105783055846363633712407933244782073928110103711266538753
71807902575779192731082629169047504052350550600840122194928923756351362966220200
23178109619818046179906897450420548912610870589088056503913584562211037693288782
96090019507413099979903597071143627933909429203286626049637582546142772755571000
30077529061414706395743900249885149142644498650064588732269519418995459703339103
51588559232940829569276986080222200289966128343931630028789203382654749603473516
31476526277225717115468671686281418472874118714793634950165319745745566041313450
60491220449470526233846820888647906733095692923842156117880142749549059141483623
03226200246816441301934846080254998647325270606104512088058712293349862185399243
30905429957638171880624723819523260464261432989407063616375367209123275161237834
82738407578735677175328792425183371195406029436094116293490095660437208367374010
90882392975031224612531245642687296717053747734506443314924558119560479901478736
20955692516151773711039975473055185406632842001472865789628693652378708020647632
71571364413187734327510072631080569582516938112809572432024601571117786174726837
61623869704457588005158037495665069625778930898095725794710701639238231528115579
61912028737868923893433519850866593391725714397527770759059751198934506870173594
01696725618647131071150167473689926901160826337621723466889698408625172643840000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000
  (5)ruby之根本:
    Ruby是一种简便快捷的面向对象编程的脚本语言.Ruby可以(像Perl一样)进行文本处理及系统管理,其功能十分丰富.同时,Ruby简单易懂,便于扩充.
    Ruby有下列特点.
    <1>解释器
        Ruby是解释型语言,因此执行程序时无需编译.
    <2>变量无类型(动态地确定类型)
        Ruby的变量可以接收各种类型的数据,因此没有必要担心变量类型的问题.另一方面,这弱化了编译检查的功能.
    <3>无需声明变量
        Ruby中无需声明变量即可使用.可以根据变量名分辨变量的种类(局部变量,全局变量,实例变量等).
    <4>内存管理无需用户干预
        Ruby自动进行内存管理.解释器内置的垃圾回收器会自动回收不再使用的对象.
    <5>一切都是对象
        从一开始Ruby就被设计成为纯粹的面向对象语言.包括整数这种基本的数据类型在内所有数据都被看是对象,进而得到统一的处理.
    <6>类,继承,方法
        Ruby当然具有面向对象语言的基本功能,包括类,继承和方法等.
    <7>特殊方法
        可向某对象添加方法.例如,可以把GUI按钮被按下时的动作作为方法记述下来,还可以用它来进行原型库(prototypebase)的面向对象编程(只要您想这样的话).
    <8>使用模块进行糅合(Mix-in)
        Ruby认为多重继承会导致问题复杂化,因此故意舍弃了多重继承,但可以使用模块超越类的界限来共享数据和方法等.这就是"Mix-in"糅合功能
    <9>迭代器
        迭代器功能可以将流程控制结构抽象化.
    <10>闭包
        可以将某过程片段对象化,对象化后的该过程片段就称作闭包.
    <11>功能强大的字符串操作/正则表达式
        以Perl为样板创造出了功能强大的字符串操作和正则表达式检索功能.
    <12>超长整数
        内置了处理超长整数的功能,所以只要内存允许就可以计算非常大的整数.例如计算400的阶乘等也轻而易举.
    <13>异常处理功能
        异常处理功能可以使您编写代码处理异常情况.
    <14>可以直接访问OS
        Ruby可以使用(UNIX的)绝大部分的系统调用.即使单独使用Ruby也可以进行系统编程.
    <15>动态加载
        若OS支持的话,可以在运行时读入对象文件.

 

    注: 现打算系统的学习ruby,上文大约是1年之前所写,后来因为时间的关系没有跟进,现在闲暇的时间比较充裕,特整理出一个学ruby的系列。

 

离线安装rails:

1.下载rails

2.解压缩到%RUBY_HOME%\lib\ruby\gems\1.8\gems下,执行gem install rails --include-dependencies即可,这种方式不会重新下载rails,只是小更新一下,顺便安装rails

你可能感兴趣的:(编程,正则表达式,Ruby,Rails,rubygems)