返回for循环并打印txt文件

时间:2017-06-28 13:33:44

标签: ruby return argv

我正在尝试一个代码,当for - loops方法将生成字母时将打开一个文件,当这些字母将连接在一起形成'abcd'时,这将返回脚本并打印txt文件。 我尝试了不同的可能性,但目前只能停止脚本并打印所有时间字母,也打印文件。但从来没有能够让所有人一起工作。

def words(target)
  filename = ARGV.first

 txt = open(filename)

  ('a'..'z').each do |i|
    ('a'..'z').each do |j|
      ('a'..'z').each do |h|
        ('a'..'z').each do |g|

   together = i+j+h+g
   print together

case together
 when together == target
  return print txt.read

           end
         end
       end
     end
   end
 end

words("abcd")

提前致谢。

2 个答案:

答案 0 :(得分:1)

('a'..'z').
  to_a.
  repeated_permutation(4).
  map(&:join).
  detect { |w| w == target }

答案 1 :(得分:0)

这不是case的工作方式,您应该使用if代替:

def words(target)
  filename = ARGV.first

 txt = open(filename)

  ('a'..'z').each do |i|
    ('a'..'z').each do |j|
      ('a'..'z').each do |h|
        ('a'..'z').each do |g|
          together = i+j+h+g
          print together

          if together == target
            return print txt.read
          end
        end
      end
    end
  end
end

words("abcd")

或者,如果您坚持使用case(由于某种原因):

case together
  when target
    return print txt.read
end