Ten kod próbuje odczytać każdy obiekt do elementu tablicy, więc trzeba to powiedzieć, gdzie jeden kończy się, a następny zaczyna. Linia $/="\n\n"
ustawia to, czego używa Ruby, aby rozbić twój plik.
$/
jest znany jako "separator rekordów wejściowych" i jest to wartość używana do podziału pliku podczas jego odczytu. Domyślnie ta wartość jest ustawiona na nową linię, więc gdy czytasz w pliku, każdy linia zostanie umieszczona w tablicy. Jakie ustawienie tej wartości, mówisz ruby, że jedna nowa linia nie jest końcem przerwy, zamiast tego użyj podanego ciągu.
Na przykład, jeśli mam pliku oddzielone przecinkami, mogę napisać $\=","
wtedy, gdy robię coś takiego kodu w pliku jak poniżej:
foo, bar, magic, space
Chciałbym utworzyć tablicę bezpośrednio, bez konieczności Podziel ponownie:
["foo", " bar", " magic", " space"]
Twoja linia będzie więc wyglądała na dwie nowe linie i będzie dzielona na każdą grupę zamiast na każdą linię. Otrzymasz tylko 2 nowe wiersze z rzędu, gdy jeden wiersz jest pusty. Zatem ta linia mówi ruby, gdy czytając pliki, łamie puste linie zamiast każdej linii.
To zły kod. Samo przejście na ['IO.foreach'] (http://ruby-doc.org/core/IO.html#method- c-foreach) byłoby dużym usprawnieniem:' File.foreach ("/ home/alan/tmp/blah.yaml "," \ n \ n ") do | object |'. To nie wykorzystuje (ukrywa) zmiennych globalnych, a także zamyka plik. – cremno
To nie jest duplikat [nominowanego przykładu] (http: // stackoverflow.com/questions/1042384/how-do-you-use-global-variables-or-constant-in-ruby): To pytanie dotyczy tego, jak używać zmiennych globalnych w Ruby, ale to pytanie dotyczy znaczenia określona wcześniej zmienna globalna. –