发表时间:2007年4月29日 15时27分25秒
看了两章语法,拿起参考手册就开始了我的第一个ruby程序,
想起以前做过的一个小工具,就拿来了做实验。
是一个将手机号码文件按地市分离的小程序。
就是熟悉了一下IO系统,因为我平时需要写这一方面的IO太多了。
完成同样功能的JAVA程序花了70行左右的代码,而ruby仅花费了30行,可见ruby确实在语法上非常的简练。
而且ruby的 block 确实无处不在。
rules = Hash.new(0)
filewriters = Hash.new(0)
File.open("rules.txt") do |rule_file|
rule_file.each do |line|
area,prefix = line.chomp.split(/\s*\,\s*/)
rules[prefix] = area;
end
end
File.open("input.txt") do |input_file|
input_file.each do |line|
code_seg = line[0,7];
if rules.has_key?(code_seg)
area = rules[code_seg];
if !filewriters.has_key?(area)
filewriters[area] = File.open(area+".txt","w+")
end
filewriters[area] << line
else
if !filewriters.has_key?("000")
filewriters["000"] = File.open("000.txt","w+")
end
filewriters["000"] << line
end
end
end
filewriters.each_value {|file| file.close}
看了两章语法,拿起参考手册就开始了我的第一个ruby程序,
想起以前做过的一个小工具,就拿来了做实验。
是一个将手机号码文件按地市分离的小程序。
就是熟悉了一下IO系统,因为我平时需要写这一方面的IO太多了。
完成同样功能的JAVA程序花了70行左右的代码,而ruby仅花费了30行,可见ruby确实在语法上非常的简练。
而且ruby的 block 确实无处不在。
rules = Hash.new(0)
filewriters = Hash.new(0)
File.open("rules.txt") do |rule_file|
rule_file.each do |line|
area,prefix = line.chomp.split(/\s*\,\s*/)
rules[prefix] = area;
end
end
File.open("input.txt") do |input_file|
input_file.each do |line|
code_seg = line[0,7];
if rules.has_key?(code_seg)
area = rules[code_seg];
if !filewriters.has_key?(area)
filewriters[area] = File.open(area+".txt","w+")
end
filewriters[area] << line
else
if !filewriters.has_key?("000")
filewriters["000"] = File.open("000.txt","w+")
end
filewriters["000"] << line
end
end
end
filewriters.each_value {|file| file.close}