print "I have a number,guess it?:\n";
while(<>)
{
chomp;
next unless /\d+/;
$_>$num? print "Too high\n" :
$_==$num? last :print "Too low\n";
}
這段代碼轉(zhuǎn)成ruby,可以這樣寫:
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中的要執(zhí)行的表達式得放在begin...end里面,這一點讓我琢磨了一段時間,還以為Ruby不支持呢。讀《Perl語言入門》最大的樂趣除了妙趣橫生的語言、古靈精怪的符號之外,就是尋找Ruby中的Perl痕跡,哦哦,那個味道相當重——駱駝的味道。不過現(xiàn)在Ruby不鼓勵這樣的寫法,畢竟,程序是給人讀的,因此可以改寫一下:
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
posted @ 2007-12-07 16:30 dennis 閱讀(2212) | 評論 (1) | 編輯 收藏