博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一段小程序(Perl vs. Ruby)
阅读量:7103 次
发布时间:2019-06-28

本文共 1056 字,大约阅读时间需要 3 分钟。

  读《Perl语言入门》(第四版,我买的书,网上有个翻译质量很高的电子版)的第10章的习题,人见人爱的猜数游戏,用perl写出来大概这样:
$num
=
int
 (
1
 
+
 
rand
 
100
);
print
 
"
I have a number,guess it?:\n
"
;
while
(
<>
)
{
    
chomp
;
    
next
 
unless
 
/\
d
+/
;
    
$_
>
$num
?
 
print
 
"
Too high\n
"
 
:
        
$_
==
$num
?
 
last
 
:
print
 
"
Too low\n
"
}
   题外话:玩Perl的高人们别鄙视我,我是perl新手啊,如果写的不够“perl”,多多指点。
  
   这段代码转成ruby,可以这样写:
$num
=1+
(rand 
100
)
puts 
"
I have a number guess it?
"
while
(true)
   gets.chomp
   next unless 
~/
\d
+/
     $_.to_i
>
$num?begin 
print
 
"
Too high\n
"
 end:
       $_.to_i
==
$num? begin 
break
 end:begin 
print
 
"
Too low\n
"
 end
    
end
    看出来了吧,两者何其相似啊,包括perl里面人见人爱的$_,ruby也是支持的,唯一那么一点不同的地方就是last换成了break,然后是正则表达式左边多了个~,你完全可以将这个符号去掉,不过会有警告,最后就是Ruby中的要执行的表达式得放在begin...end里面,这一点让我琢磨了一段时间,还以为Ruby不支持呢。读《Perl语言入门》最大的乐趣除了妙趣横生的语言、古灵精怪的符号之外,就是寻找Ruby中的Perl痕迹,哦哦,那个味道相当重——骆驼的味道。不过现在Ruby不鼓励这样的写法,毕竟,程序是给人读的,因此可以改写一下:
$num
=1+
(rand 100)
puts 
"
I have a number guess it?
"
while
(true)
   guess
=
STDIN.gets
   next unless guess
=~/
\d
+/
   
if
(guess.to_i
>
$num)
      puts 
"
Too high
"
   elsif(guess.to_i
==
$num)
      
break
   
else
      puts 
"
Too low
"
   end
end
文章转自庄周梦蝶  ,原文发布时间2007-12-07

转载地址:http://fruhl.baihongyu.com/

你可能感兴趣的文章
解决walle报错:宿主机代码检出检测出错,请确认svn用户名密码无误
查看>>
svn使用openldap验证apache访问方式
查看>>
Linux下安装emacs-24.3
查看>>
二分搜索找到所在区间
查看>>
拓扑排序(topsort)
查看>>
倒要看看你有啥本事
查看>>
JavaScript高级程序设计(第三版)学习笔记22、24、25章
查看>>
【清北学堂2018-刷题冲刺】Contest 3
查看>>
CCF NOI1030 角谷猜想
查看>>
HDU1042 n!
查看>>
UVA1368 UVALive3602 ZOJ3132 DNA Consensus String【贪心】
查看>>
Linux下C编写基本的多线程socket服务器
查看>>
iOS实时监控网络状态的改变
查看>>
MFC中的CString类
查看>>
手把手教你测之二——有信,一款网络电话
查看>>
Ubuntu 12.04 安装Scrapy爬虫框架
查看>>
selenium在执行浏览器最大化方法的时候报错
查看>>
[Meteor] meteor project structure
查看>>
用优先级队列实现先进先出队列;
查看>>
ROS + Kinect2 跑ORB_SLAM2 安装步骤记录
查看>>