Как я могу сжать каждую строку в массиве сразу? - PullRequest
8 голосов
/ 20 сентября 2010

В интересах написания более чистого кода ...

IO.popen("Generate a list of files").readlines.each{ |line|
   chomped_line = line.chomp
   # ...
}

Ответы [ 4 ]

22 голосов
/ 20 сентября 2010
IO.popen("Generate a list of files").readlines.map(&:chomp)
3 голосов
/ 20 сентября 2010
IO.read("something").split($/)

$ / - строка разделителя.IO.read закрывает файл после прочтения.

2 голосов
/ 19 сентября 2014
# Example 1
File.readlines("file.txt").each{|line| line.chomp!}

# Example 2
File.readlines("file.txt").map(&:chomp)

# Example 3
File.open("file.txt", "r"){|file| file.readlines.collect{|line| line.chomp}}
1 голос
/ 14 ноября 2013

Я бы сделал это быстрее и потреблял бы меньше памяти:

  1. используйте «each_line» вместо «readlines.each». Зачем читать весь вывод сразу?
  2. используйте "chomp!" (восклицательный знак), чтобы изменить строку на месте.

Тогда это:

IO.popen( "generate_lines").each_line { |line|
    line.chomp!
    do_something_with line
}
...