Simple examples
向前
目录
向后
Getting Started
Strings
向前
目录
向后
Ruby 用户指 南
简单的例子
让我们写一个计算阶乘的函数.对于阶乘的数学定义如下: n! = 1 = n * (n-1)! (当 n==0 时) (其它情况)
在 Ruby 里,可以这样来写: def fact(n) if n == 0 1 else n * fact(n-1) end end
你可能会发现 end 的反复出现,正因为如此,Ruby 被叫做"类 Algol"语言.(实际 上,Ruby 的语法更像 Eiffel).同时,你也可能会发现这段函数缺少 return 语句. 在这里是可以用 return 的,但却不是必须的,因为一个 Ruby 的函数会自动返回它 所最后赋值的元素.
让我们来试试我们的阶乘函数.加入一行代码会使它成为一个可工作的程序: # Program to find the factorial of a number # Save this as fact.rb def fact(n) if n == 0 1 else n * fact(n-1) end end print fact(ARGV[0].to_i), "\n"
这里,ARGV 是一个包含命令行参数的数组,to_i 将字符串转化为整数. % ruby fact.rb 1 1 % ruby fact.rb 5 120
当参数为 40 时它可以
工作吗?它将使你的计算器产生溢出(overflow)... % ruby fact.rb 40 8977343456112695960000
它确实算出来了.实际上,Ruby 能处理任何你机器的内存所允许的整数.实际丧 400!也可以: % ruby fact.rb 400 64034522846623895262347970302583026002959458684 44594280239727847864746326467629435057503585681 0848298522896373424264 64624432508906627739149996 440709549672032243491121079759328079510154537266 7250934976376571032635033313393 5202437378863
2983025308 591298346833952075968681043329725519 485267443223243866994842240423259980555769613992 358996537970147827206606320217379472010321356624 60459736069956759583609682228657857 954936532220078258453848 03558374506612722491 00800000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000
我们不能一眼看出是否算对了,但我想应该是对的吧. :-)
输入/ 输入/求值循环
当你不带参数启动 Ruby 的时候,Ruby 会从标准输入读入命令并在输入结束后再 执行: % ruby print "hello world\n" print "good-bye world\n" ^D hello world good-bye world
Ruby 还包含了一个名为 eval.rb 的程序,它可以令到你在一个交互式的循环中输 入 Ruby 代码并随之显示结果.在后面的教程里将广泛使用这个程序.
如果你有一个 ANSI 兼容(ANSI-compliant)的终端(如果你正运行着一个 UNIX 变 种,一般都是的);在 DOS 下,你需要安装 ANSI.SYS 和 ANSI.COM;然后就可以使用 这个支持可视化缩排,警告提示,彩色高亮度显示的增强 eval.rb 了.不行的话, 试试 Ruby 发行版里 sample 目录下的那个非 ANSI 版本,它可以运行于所有的控制 台.这是一个简短的 eval.rb 对话: % ruby eval.rb ruby> print "Hello, world.\n" world.\ Hello, world. nil ruby> exit
hello world 由 print 打印出来.下一行 nil
报告最后计算出来的值;Ruby 并 不区分语法和表达式,因此计算一段代码从根本上说和执行它是一回事.在这 里,nil 的意思是 print 并未返回一个有意义的值.注意:可以用 exit 或^D 离开这 个循环的解释器. 在整个教程里,'ruby>'表示我们这个非常有用却很小的 eval.rb 程序的命令提 示符.
Getting Started
Strings
向前
目录
向后
Simple examples
Regular expressions
向前
目录
向后
Ruby 用户指 南
字符串
Ruby 将字