为什么"啜饮"文件不是普通文本文件I/O的好习惯,何时有用?
例如,为什么我不应该使用这些?
File.read('/path/to/text.txt').lines.each do |line|
# do something with a line
end
Run Code Online (Sandbox Code Playgroud)
要么
File.readlines('/path/to/text.txt').each do |line|
# do something with a line
end
Run Code Online (Sandbox Code Playgroud) 在ruby 1.9.3中,我正在尝试编写一个程序,它将从任意一组字符中找到包含n个字符的所有单词.所以,例如,如果我给出了字符[b,a,h,s,v,i,e,y,k,s,a]和n = 5,我需要找到所有可以使用的5个字母的单词只使用那些字符.使用http://wordlist.sourceforge.net/中的2of4brif.txt单词列表(也包括英国单词和拼写),我尝试了以下代码:
a = %w[b a h s v i e y k s a]
a.permutation(5).map(&:join).each do |x|
File.open('2of4brif.txt').each_line do |line|
puts line if line.match(/^[#{x}]+$/)
end
end
Run Code Online (Sandbox Code Playgroud)
这没有任何作用(没有错误消息,没有输出,就像冻结一样).我还尝试了基于以下线程的变体:
我尝试过的每一个变化都导致:
1)冷冻;
2)打印列表中包含5个字符排列的所有单词(我假设它正在做什么;我没有检查所有数千个打印的单词); 要么
3)打印列表中单词中发现的所有5个字符的排列(再次,我认为这是它正在做的事情).
同样,我不是在寻找包含 5个字符排列的单词,我正在寻找5个字符的排列,这些排列本身就是完整的单词,因此文本文件中的一行只有在打印时才能打印出来.完美匹配排列.
我究竟做错了什么?提前致谢!