【发布时间】:2012-01-06 00:45:21
【问题描述】:
我想解析标准输入文本,并获取结构化数据容器对象。 我每次都感到困惑,最后我使用全局变量 ARGF 并拆分。 我怎样才能做得更好?我怎样才能更轻松地写作和阅读?或者什么宝石对我有帮助?
以下是我的丑陋代码的一个案例:
# encoding: utf-8
$DATA = {}
$COUNT = 0
ARGF.each do |line|
col = line.split(nil).map(&:to_i)
if col.count == 1
next
elsif col.count == 2
$DATA[$COUNT][:cut_param] << { :cut_order => col[0], :pick_count => col[1] }
elsif col.count == 3
$COUNT += 1
$DATA[$COUNT] = {
:card_amount => col[0],
:cut_count => col[1],
:needle_order => col[2],
:cut_param => []
}
end
end
【问题讨论】:
-
这是怎么回事?您是否愿意编写更容易集成到更大工具中的代码,而不需要每个工具都单独执行?这对我来说似乎很好。
-
真的需要nil参数来分割吗?
-
如果您需要帮助格式化您的数据,您需要提供您尝试解析的数据样本。另外,如果你的代码发现一行有四列或更多列,你会怎么做?