Ruby隐藏摘要
-
[翻译] Rails 2.0 入门指导 (发布于 2008-03-20)
首发于 http://blog.csdn.net/joliny/archive/2008/03/05/2152232.aspx我很高兴的看到 我的rails2.0视频教程被广泛接受。超过1500人次看过它,做他的目的是想简单快速地介绍下rails2.0,展示下那些可以在30分钟以内做到的事。 现在,我将要把那段视频分成几个主要的部分,并且建立一个包含一些新特性的逐步讲解的rails2.0教程. 像其他教程一样,他并不能涵盖rails2.0 100%的特性,详细的 ...查看
-
在linux下安装Ruby (发布于 2007-06-21)
1 - 首先,我们要取得最新的Ruby发行版本(目前是Ruby-1.8.2.tar.gz)。请到 www.ruby-lang.org/en/20020102.html 下载。2 - 然后解压缩:tar -zxf ruby-1.8.2.tar.gz3 - 最后运行:./configuremake make install这是基本的linux下软件安装方式:)4 - OK,现在敲:ruby -v是不是出现了ruby的版本号了,恭喜,您已经成功安装了ruby! ...查看
-
在windows下安装ruby (发布于 2007-06-21)
在Windows环境ruby有两种安装方式:1 - 从源代码完全编译安装就是我们下载ruby语言最新的源代码,用VC或者其他C语言编译器编译安装ruby。不过其实不用麻烦,已经有网友为我们编译好了,直接到http://www.garbagecollect.jp/ruby/mswin32/en/下载。回来以后最好设置一下$PATH路径(像设置JDK路径一样)。2 - 最简单的方法(推荐!)直接从http://rubyforge.org/projects/rubyinstaller ...查看
-
Windows下PATH的设定方法 (发布于 2007-06-21)
Windows 95或Windows 98 首先使用记事本等合适的编辑器打开C:\AUTOEXEC.BAT。找到以「SET PATH=」或「PATH=」或「PATH」开始的行,并在行尾添加「;C:\Ruby\bin」。若没有该行的话,请自己添加「PATH %PATH%;C:\Ruby\bin」。然后重启系统即可生效。 Windows Me 在「开始菜单」中选择「指定并运行一个文件」。 输入「msconfig」后点击 OK 。 在打开的系统设定程序中,找到「环境」 ...查看
-
面向初学者的Ruby安装指南 (发布于 2007-06-21)
各平台上的注意事项 您想在下列哪个平台上使用Ruby呢? Windows 95/98/Me/XP 请直接进入下个单元。 Windows NT/2000 Windows NT或Windows 2000并不是供初学者单独使用的OS。安装Ruby的方法大体上与Windows95/98/Me相同,但有很多具体步骤或问题点需要特别留意。还是请教身边的高手比较稳妥。 MacOSX 最近的MacOSX的附带CD-ROM中收录了Ruby。请将其装入系统即可。 MacOS (非MacO ...查看
-
ruby是什么? (发布于 2007-06-21)
Ruby是何方神圣? Ruby是一种功能强大的面向对象的脚本语言,她可以使您方便快捷地进行面向对象编程.Ruby使文本处理和系统管理变得简单,与Perl非常相似.一句话:简单明了,扩展性强,移植性好. Ruby的几大亮点: 语法简单 垃圾回收 可移植性 动态载入 完全免费 正则表达式 走向世界的Ruby 松本行弘"Matz"(Matsumoto Yukihiro)是Ruby语言的发明人,他从1993年起便开始着手Ruby ...查看
-
ruby的命令行选项 (发布于 2007-06-21)
请使用如下命令行启动Ruby解释器.ruby [ option ...] [ -- ] [ programfile ] [ argument ...] 这里的"option"指下文将要提到的命令行选项中的一个。"--"则显式地表明选项字符串到此结束。"programfile"是装载Ruby脚本的文件。若省略不写或者写成"-"时,Ruby会把标准输入当做Ruby脚本进行处理。 programfile若以“#!”开始,则进行特殊的处理。详细情况请参考下文的关于解释器行。 arg ...查看
-
命令行参数处理 (发布于 2007-06-21)
Ruby的命令行参数处理和其他语言类似,她把命令行参数保存在ARGV这个全局数组中的。以下代码的功能是打印全部命令行参数:for str in ARGV puts strendC语言程序员需要注意的是ARGV数组第一个元素并不是程序名(和argv[0]可不一样哦!) ...查看
-
ruby环境变量 (发布于 2007-06-21)
-RUBYLIB 这个环境变量是Ruby用来搜索库的路径,当然,Ruby有自己默认的路径,并存放在$:中。这个变量设定之后,则会被添加到Ruby库搜索路径默认值之前。irb(main):001:0> puts $: c:/ruby/lib/ruby/site_ruby/1.8 c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt c:/ruby/lib/ruby/site_ruby c:/ruby/lib/ruby/1.8 c:/ruby/lib/ruby/1.8/i386-mswin32 . => nil irb(main):002:0> ...查看
-
Ruby在不同的Windows编译环境下的差异 (发布于 2007-06-21)
版本的选择若您精通UNIX且迷恋CUI的话,请安装Cygwin后自己编译Cygwin版。若非如此的话,我们向您推荐 mswin32版和mingw版。后者中两个版本的区别仅仅是编译环境不同而已,若使用二进制的话,则没有什么不同(但Ruby1.6中稍有不同,后文详述)。若您经常使用COM (Component Object Model)的话,还可以考虑使用ActiveScriptRuby。各自的特征 mswin32用Microsoft的Visual C++编译而成的rub ...查看
-
教程:Ruby概述 (发布于 2007-06-21)
Ruby是面向对象的编程语言,她追求的是“简便快捷的面向对象编程”。Ruby是解释型语言,因此不需编译即可快捷地编程。同时Ruby具有类似Perl的强大的文本处理功能,她可并不只是个玩具,您可以用她来进行实用的编程。此外,您还可以很方便地使用C语言来扩展Ruby的功能,因此可以把她当作各种库的前端来使用。 若您曾经“想要一种简单的面向对象的语言”,或者认为“Perl的功能虽然好用, ...查看
-
教程:Ruby的基础 (发布于 2007-06-21)
Ruby的“单行程序” 为了使您适应脚本语言,首先介绍几个Ruby的单行程序。# 经典的 Hello world. print "Hello world\n" # 列出输入文件中包含”From”的行 while gets(); print if /From / end # 向文件中添加行号 while gets(); print $., ":", $_ end # π的计算 print 4*Math.atan2(1,1), "\n" Ruby的注释 Ruby的注释是指从#开始到该行结束。 Ruby的表达式 Ruby的表达式包括下列内 ...查看
-
教程:迈出第一步 - grep (发布于 2007-06-21)
以Ruby为代表的脚本语言常被用来进行文本处理。为了能对她有个感性认识,我们先给出第一道例题教您使用“grep”命令,其功能就是从文本中找出符合正则表达式的行。 grep命令用法如下。grep pattern file... 省略文件名时则从标准输入搜索合适的行。 若用Ruby(简单地)改写的话,就像下面这样。$pat = ARGV.shift while gets print if /#{$pat}/ end 虽然只有4行,但却是很不错的 ...查看
-
教程:正则表达式 (发布于 2007-06-21)
Ruby中常会用到正则表达式。正则表达式是用来表达字符串的模式(pattern)的。也可以这么理解:我们使用正则表达式来表示某种搜索规则,然后使用该正则表达式来完成字符串的搜索工作。举个例子,假定有这样的搜索规则:“字符串以’FOO’开始,以’R’结束”,那么就可以使用以下正则表达式来表示该规则。/^FOO.*R$/ Ruby用//将正则表达式括起来。^表示开头,$表示结尾,.*表示0个以上的 ...查看
-
教程:线程 (发布于 2007-06-21)
线程概述 线程(Thread)就是指能在一个程序中处理若干控制流的功能。与OS提供的进程不同的是,线程可以共享内存空间。 Ruby中使用的线程是用户级线程,由Ruby解释器进行切换管理。其效率要低于由OS管理线程的效率,且不能使用多个CPU,这确实是它的缺点。但其优点也很明显,即可移植性很高。 线程的生成 可以使用Thread.start方法来生成新线程。其用法如下。Thread.start { .... } Thr ...查看
-
ruby-对象 (发布于 2007-06-21)
对象概述 Ruby所能处理的值都是对象。Ruby操作对象时的办法只有一种,那就是方法调用。对象所属的类决定了对象所包含的方法。生成对象时,对象的所属类也就确定了,除非导入特殊类以外,对象的所属类不会改变。可以说对象是某个特定类的“实例”。 生成对象一般是通过调用别的对象的方法来实现的。 类 类决定了归属其下的对象的方法。若能调用归属对象的某方法时,我们就说该方法是“由 ...查看
-
Ruby术语集 (发布于 2007-06-21)
A AWK 由Alfred Aho(A)、Peter Weinberger(W)和Brian Kernighan(K)共通创建的一种小型脚本语言。 B blade ml archive (blade/ruby) C Coerce 进行数据类型变换的方法。如果某数值计算方法从参数那里获得了一个类型不明的实例时, 它会调用coerce方法来进行数据类型变换。coerce方法会返回参数中的数值和本身。 Ruby库的数值类型变换顺序为Fixnum -> Bignum -> Rational ...查看
-
Ruby的运行平台 (发布于 2007-06-21)
在各方有志之士的努力下,Ruby已经被移植到多种平台。下面,就从OS或开发环境等方面对Ruby的运行环境做一个简要介绍。 关于安装和编译问题,请参考Ruby 安装指南。 Unix Windows(Win32) Win32 native版 mswin32 MinGW (mingw, mingw32) bccwin32 Cygwin (cygwin) Mac Mac OS X BeOS MS-DOS DJGPP (djgpp) OS2 (os2_emx), (emx) VMS human68k GNU (GNU Hurd) Wind ...查看
-
ruby一般的问题 (发布于 2007-06-21)
1.1 Ruby是什么? 一言以蔽之,Ruby是一种语法简单且功能强大的面向对象的脚本语言。 与perl一样,Ruby的文本处理功能十分强大。当然了它的功能远不止于此,您还可以使用它来开发实用的服务器软件。 Ruby博采众长,吸收了众多语言的优点,却又别具一格。 Ruby的优点主要体现在以下几个方面。 它的语法简单 它具有普通的面向对象功能(类、方法调用等) 它还具有特殊的面向对象功能(M ...查看
-
变量、常数、参数 (发布于 2007-06-21)
2.1 将对象赋值给变量或常数时,会先拷贝该对象吗? 变量和常数都指向一个对象。即使不赋值, 它也是指向nil对象的。赋值操作只不过是让它指向另一个新对象而已。 所以, 赋值时并不会拷贝并生成一个新对象. 而是让赋值表达式左边的变量或常数指向表达式右边的对象。 尽管如此, 可能还是有人不理解. 这也是情有可原的, 因为上面的解释并不能涵盖所有的情况. 实际上, Fixnum、NilClass、 Tr ...查看
-
带块的方法调用 (发布于 2007-06-21)
3.1 什么是"带块的方法调用"? 有些方法允许在调用它的过程中添加块或者过程对象, 这种特殊的方法调用就是"带块的方法调用"。 这原本是为了对控制结构(特别是循环)进行抽象而设置的功能, 因此有时也被称作迭代器. 当然了, 若您只想调用块而不进行iterate(迭代)操作时,也可以使用它. 下例中就用到了迭代器。data = [1, 2, 3] data.each do |i| print i, "\n" end 它会输出如下内容。 ...查看
-
ruby句法问题 (发布于 2007-06-21)
4.1 像:exit这种带:的标识符表示什么? 它叫做符号对象,它与标识符之间是1对1的关系。您也可以使用"exit".intern来得到它。在catch, throw, autoload等方法中,既可以使用字符串参数,又可以使用符号参数。 4.2 如何取得与符号同名的变量的值? 在symbol的作用域内,使用eval((:symbol).id2name)来取值。a = 'This is the content of "a"' b = eval(:a.id2name) a.id == b.id 4.3 lo ...查看
-
ruby方法常见问题 (发布于 2007-06-21)
5.1 向对象发出消息之后,将按照什么顺序来搜索要执行的方法? 将依次搜索特殊方法、本类中定义的方法和超类(包括Mix-in进来的模块。写成 类名.ancestors。)中定义的方法,并执行所找到的第一个方法。若没有找到方法时,将按照同样的顺序来搜索method_missing。module Indexed def [](n) to_a[n] end end class String include Indexed end p String.ancestors # [String, I ...查看
-
ruby的内部库问题 (发布于 2007-06-21)
7.1 instance_methods(true)返回什么? klass.instance_methods只返回某klass类(或模块)中所定义的实例方法, 而klass.instance_methods(true)则会返回所有的实例方法, 包括从超类中继承来的实例方法。(但仅限于public方法) private_instance_methods与protected_instance_methods的参数的意义相同。 7.2 为什么rand总是生成相同的随机数? 在ruby 1.4.2以前的版本中, 每次执行程序时rand ...查看
-
关于类、模块的问题 (发布于 2007-06-21)
6.1 重定义类时,是否会覆盖原来的定义? 重定义同一个类时,意味着对原有定义进行补充,不会覆盖原来的定义。而重定义方法时,则会覆盖原有定义。 6.2 有类变量吗? 从1.6版本开始出现类变量。类变量名前都带有`@@'。class Foo @@F = 0 def foo @@F += 1 print @@F, "\n" end end 在1.4以前的版本中,使用容器类(Array、Hash等)来代替类变量。class Foo F = [0] d ...查看
-
ruby的扩展库相关问题 (发布于 2007-06-21)
8.1 如何使用交互式Ruby? 您可以像下面这样来使用irb脚本$ irb irb(main):001:0> 1 + 2 * 3 7 irb(main):002:0> if true irb(main):003:1> :true irb(main):004:1> else irb(main):005:1* :false irb(main):006:1> end :true irb(main):007:0> 它就是交互式的Ruby。 详细用法请参考irb.rb。 若您使用的是二进制包形式的ruby的话,irb可能在其他包里。请您查阅 ...查看
-
日语字符的处理 (发布于 2007-06-21)
10.1 若包含汉字的脚本输出乱码或无法正常运行时,该如何处理? 在ruby 1.6以后的版本中,默认情况下不会对汉字代码进行特殊的解释。若想处理汉字时,必须使用ruby -Ke等来设置$KCODE。 若想在Windows上使用SJIS时,应该设为ruby -Ks;若想在UNIX系列OS上使用EUC时,应该设为ruby -Ke。 另外,若在脚本首行中添加如下代码时#! ruby -Ks 就可以将设定的选项置入脚本之中。恐怕这就是最 ...查看
-
Ruby的处理系统 (发布于 2007-06-21)
11.1 能不能编译Ruby脚本呢? RAA中提供了面向x86的Just In Time编译器,但它只是个试验性的产品,对应于1.5版本,且不具实用性。 11.2 有没有Java VM版的Ruby? JRuby( <URL:http://jruby.sf.net/> )尚处于研发阶段。 11.3 除了original Ruby之外,就没有其他版本吗? 目前还没有。 11.4 有没有Ruby用的indent? 没有。Ruby脚本的解析是非常麻烦的。但随着Ruby用户数量的激增, ...查看
-
关于ruby迭代器问题 (发布于 2007-06-21)
3.1 什么是迭代器? 有些方法允许在调用它的过程中添加块或者过程对象, 这种特殊的方法就是迭代器。 迭代器是为了抽象化控制结构(特别是循环)而设的一种方法. 还是举个实际的例子吧. 若您想分别为集合中的每个元素来进行相同的处理的话, 就应该使用迭代器. 例如data = [1, 2, 3] data.each do |i| print i, "\n" end 它会输出如下内容。$ ruby test.rb 1 2 3 也就是说,分别为data中 ...查看
-
Ruby程序快速入门之类变量和类方法 (发布于 2007-06-20)
象大多数面向对象语言一样,Ruby类也允许定义类变量和方法。一个类变量允许在一个类的所有实例间共享单个变量。在Ruby中,两个@@号用于指示类变量。例如,如果你想要使一个BankAccount类的所有实例共享相同的利息率,那么该类可能被如下定义: class BankAccount@@interestRate = 6.5def BankAccount.getInterestRate()@@interestRateendattr_accessor :balance def initia ...查看
-
我爱 Ruby 的三十七个理由 (发布于 2007-06-20)
这里我就不累述 Ruby 语言的历史了。如果您还不了解 Ruby,官方网站 www.ruby-lang.org 是最好的去处。而对于已经了解 Ruby 的各位,我在此给出我爱上这门(相对比较)新的语言的理由。 Ruby 是面向对象语言。 这意味着什么呢?的确,关于“什么是 OOP”,每十位程序员当中恐怕就有十二种看法。这个问题我留待您自己判断。而就特征而言,Ruby 提供了机制,将数据和方法封装到 ...查看
-
三大编程语言性能PK:Java, C/C++和Ruby (发布于 2007-06-20)
你可能会觉得下面的图表比较有意思,因为它是分别用三种编程语言(Ruby, Java, C/C++)写的埃拉托色尼质数过滤算法(译注:Sieve of Eratosthenes)的性能分析图,如图:(本文的最后附有相应代码) 好,很明显Ruby是慢的,而且慢了大概有1.5个数量级(译注:即约30倍)。这对于Ruby爱好者来说可不是个好消息。不过换个角度看,呼!Ruby与五、六年前的顶级电脑一样快。还记得第 ...查看
-
Ruby程序快速入门之简单的例子 (发布于 2007-06-20)
基于目前学习的Ruby知识并有Ruby标准库的帮助,你应该能够构建一个真实世界的应用程序了。在开始时,我提供了一个示例应用程序,这个程序中使用了大量的我们已经讨论过的Ruby特征。这个程序读取一个简单的文本文件以得到一组股票符号和一个人所拥有的股份数并且在一个普通金融网站(finance.yahoo.com)检索股票价格。在检索股票价格以后,它计算这个人的portfolio(股份数×每份股票 ...查看
-
Ruby程序快速入门之输入输出和标准库 (发布于 2007-06-20)
输入输出 在所有的本系列文章中,在编写Ruby代码时都使用了大量的Ruby标准输出方法。其中,最为常用的是print和puts方法,有关其使用细节不再赘述。 所有这些和其它处理输入和输出的方法都定义于Kernel模块中。这个Kernel模块又被包含在Object类中。因此,Kernel的方法出现在每一个对象中。在输出方面,Kernel定义了print,printf,putc和IO类和两个子类(File和BasicSocket) ...查看
-
Ruby入门之代码块、迭代子和过程对象 (发布于 2007-06-20)
在Ruby的一切都是一个对象。甚至一个代码块也是一个对象!在Ruby中,代码对象被称为代码块。你可以把代码块想像成小的程序单元。它们包含Ruby代码并且能够在执行它们时转入到方法中。在Python,C和Java中与之类似的概念是函数指针,匿名函数,内部类和回调函数。 Ruby代码块的语法是,把Ruby代码放在大括号之间或放在do/end命令之间。如下所示: {#这是一个代码块...}do ...查看
-
Ruby程序快速入门之数据结构 (发布于 2007-06-20)
就象许多程序语言一样,Ruby也提供了完整的数据结构来存储和管理数据与对象。数组是使用方括号和用逗号隔开的单个对象参考列表创建的。 presidents=["John","Richard","Gerald","Ronald","George","William"]; 为了更为容易地创建一个充满单词的数组,Ruby提供了一个特殊的标志来消除双引号和逗号,见下面例子: presidents= %w[ John Richard Gerald Ronal ...查看
-
Ruby程序快速入门之多继承 (发布于 2007-06-20)
一些程序语言(如C++和CLOS)提供了多重继承机制:一个类可以继承自多个超类。例如,一个House可能继承自一个Building类(连同Office和Hospital类一起)和Residence类(连同Apartment类一起)。尽管多重继承可能成为一种语言强有力的特征,但是由于它会增加该语言的复杂性和歧义,因此许多面向对象语言都没有加入它。 Ruby支持单继承。然而,它还提供了mixin-它提供了多继承的许 ...查看
-
Ruby程序快速入门之方法存取控制 (发布于 2007-06-20)
在许多情况中,当你设计你的应用程序时,你可能想实现一个方法仅为一个对象内部使用而不能为另外一些对象使用。Ruby提供了三个关键字来限制对方法的存取。 · Private:只能为该对象所存取的方法。 · Protected:可以为该对象和类实例和直接继承的子类所存取的方法。 · Public:可以为任何对象所存取的方法(Public是所有方法的默认设置)。 这些关键字被插入在两个 ...查看
-
Ruby初体验之搭建运行环境 (发布于 2007-06-14)
学习一种语言,我想最应该先了解的就是怎么去搭建这种语言的运行环境。如果语言的运行环境我们知道了,再找到符合以往开发习惯的IDE工具,再看一看入门的例子,再学一学语言相关的知识。这样的时候,一种语言就应该开始入门了。 其它只要坚持学习修炼,加以时日,撑握一种语言只是时间的问题。我的ruby环境是基于linux环境的。windows下没有试过。 一、运行环境: ...查看
-
用Ruby+Builder创建XML应用 (发布于 2007-06-14)
一、 简介 自从去年Ruby on Rails问世后,人们对Ruby编程语言的兴趣似乎稳定地增长起来。Rails已经帮助人们看到了什么是Ruby:一种非常体面的,易学的且使用中充满了乐趣的语言,甚至适合于工业级应用软件的开发。 Ruby出现在几乎与Java差不多的年代,但是直到如今它才引起人们的关注。 Ruby当然也引起我的注意!最近,我发现自己使用Ruby的时间多于Java了,因为它可以帮 ...查看

