Ruby的简单实例
- 格式:pdf
- 大小:212.68 KB
- 文档页数:8
Ruby的简单实例
✓出处:站长百科
✓原文地址:/wiki/Ruby的简单实例
✓本电子书整理自站长百科Ruby简单实例词条,查看内容请访问网站。
让我们写一个计算阶乘的函数.对于阶乘的数学定义如下:
n! = 1 (当 n==0 时)
= n * (n-1)! (其它情况)
在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
815915283247897734345611269596115894272000000000
它确实算出来了.实际上,Ruby能处理任何你机器的内存所允许的整数.实际上400!也可以:
% ruby fact.rb 400
6403452284662389526234797031950300585070258302600295945 8684
4459428023971691868314362784786474632646762943505750358✓出处:站长百科
5681
0848298162883517435228961988646802997937341654150838162 4264
6194235230704624432501511444867089066277391491811733195 5996
4407095496713452904770203224349112107975932807951015453 7266
7251627877890009349763765710326350331533965349868386831 3393
5202437378815778679150631185870261827016981974006298302 5308
5912983461622723045583395207596115053022360868104332972 5519
4852674432232438669948422404232599805551610635942376961 3992
3191713406385899653797014782720660632021737947201032135 6624
✓出处:站长百科
6138090779423045973606995675958360961587151299138222865 7857
9549361617654480453222007825818400848436415591229454275 3848
0355837451802267590006139956014559520612721119291810503 2491
0080000000000000000000000000000000000000000000000000000 0000
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和;然后就可以使用这个支持可视化缩排,警告提示,彩色高亮度显示的增强eval.rb了.不行的话,试试Ruby发行版里sample目录下的那个非ANSI版本,它可以运行于所有的控制台.这是一个简短的eval.rb对话:
% ruby eval.rb
ruby> print "Hello, world.\n"
Hello, world.
✓出处:站长百科