一段小程序(Perl vs. Ruby)

简介:
  读《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
目录
相关文章
|
15天前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
24 0
|
15天前
|
前端开发 API C++
在Ruby世界中寻找你的Web框架灵魂伴侣:Rails vs Sinatra
【8月更文挑战第31天】在Ruby的世界里,选择Web框架如同挑选衣物,需根据场合和需求。Rails与Sinatra是两大热门框架,前者以其“约定优于配置”理念和全面的功能成为企业级应用的首选;后者则以轻量级和灵活性著称,适用于快速原型开发和小规模应用。通过对比两者特性,如Rails的MVC架构与Sinatra的简洁API,我们可以看到它们各有所长。选择合适的框架,如同找到旅途中的最佳伙伴,让开发之路更加顺畅愉悦。这场探索之旅教会我们,没有绝对的好坏,只有最适合的选择。
21 0
|
2月前
|
小程序 C++
【微信小程序-原生开发】实用教程19 - 表单范例 VS 表单校验(含必填校验函数封装,实时数字校验)
【微信小程序-原生开发】实用教程19 - 表单范例 VS 表单校验(含必填校验函数封装,实时数字校验)
43 0
|
2月前
|
小程序 数据库 C++
【微信小程序-原生开发】实用教程16 - 查看详情(含页面跳转的传参方法--简单传参 vs 复杂传参)
【微信小程序-原生开发】实用教程16 - 查看详情(含页面跳转的传参方法--简单传参 vs 复杂传参)
33 0
|
前端开发 小程序 C++
微信小程序开发实战(WXSS VS CSS)
微信小程序开发实战(WXSS VS CSS)
微信小程序开发实战(WXSS VS CSS)
|
IDE Ubuntu Java
|
开发框架 物联网 开发者
Ruby vs Elixir | 2022 该选哪个?
Ruby vs Elixir | 2022 该选哪个?
Ruby vs Elixir | 2022 该选哪个?
|
IDE Java Linux
2021再拾ruby以及在centos上安装Ruby3.0 vs code运行ruby 狂踩坑记录
2021再拾ruby以及在centos上安装Ruby3.0 vs code运行ruby 狂踩坑记录
271 0
|
移动开发 API C++
微信小程序 vs html5 :能力及限制
最后更新时间:2017-08-25 能力 生物识别。一般是指纹识别。基础库版本1.5.0 手机号快速填写组件(需用户主动点击,并确认授权,且小程序主体非个人),获得微信绑定的手机号。
1841 0