DATA.each_line - не возвращает заголовки - PullRequest
0 голосов
/ 04 апреля 2019
header_names = []
DATA.each_line { |e|
    if e =~ /\|/
        return header_names
    end
}
p header_names

__END__
blah blah
|A|B|C|
|1|1|1|
|2|2|2|

p header_names - почему не печатается массив header_names?

1 Ответ

3 голосов
/ 04 апреля 2019

p header_names - почему не печатается массив header_names?

У вас есть возврат верхнего уровня , то есть return вне метода. Когда Ruby встречает эту строку, он останавливает оценку сценария, и программа молча завершается. Это примерно эквивалентно:

DATA.each_line { |e|
  if e =~ /\|/
    exit              # <- if the program exits here
  end                 #
}                     #
p header_names        # <- this line won't be reached

Может быть, вы хотели find первая строка, содержащая |:

header_names = DATA.find { |e| e =~ /\|/ }
p header_names

который напечатает:

"|A|B|C|\n"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...