我刚刚开始使用Ruby,我正在寻找一种可能的替代方法,使用“gets”进行文件输入......我正在尝试编写一个简单的预热程序,打印出最长的一行文件,如:
def findMax
maxlength = 0
while line = gets
if line.length > maxlength then
maxlength = line.length
end
end
return maxlength
end
def printLines num
while line = gets
if line.length == num
puts line
end
end
end
printLines findMax
非常简单。找到最大长度,以及打印出最长线的用途,还没什么花哨的。但是,每当我用ruby longest.rb< (文件),我什么都没得到。这是因为我不能在第二个while循环中使用gets,因为它没有更多内容可读?作为替代方案,我该怎么办? :)
答案 0 :(得分:1)
假设您的文件名为foo.txt
,请使用File#readlines
将文件中的所有行读入数组,然后Enumerable#sort_by
按行size
(或{ {1}})和Array#last
选择已排序数组中的最后一项
length