Niedawno zdecydowałem się w mojej pracy na przewodnik w stylu ruby. Jednym z edyktów jest to, że żadna z linii nie powinna być szersza niż 80 znaków. Ponieważ jest to projekt Rails, często mamy ciągi, które są nieco dłuższe - tzn. "Użytkownik X chciał wysłać ci wiadomość o Thing Y", która nie zawsze mieści się w granicach 80 znaków.Łamanie długich ciągów na wielu liniach w Ruby bez zdzierania nowych linii
I rozumie są trzy sposoby mają długi okres ciąg wielu linii:
- heredoc
- %} P {
- Łańcuch znaków konkatenacji.
Jednak wszystkie te przypadki w końcu zabierają więcej cykli obliczeniowych, co wydaje się głupie. Łączenie ciągów oczywiście, ale dla HEREDOC i% Q muszę rozebrać nowe linie, przez coś takiego jak .gsub (/ \ n $ /, '').
Czy jest to metoda czysto składni, która jest równoważna po prostu cały ciąg w jednym wierszu? Celem jest oczywiście nie wydawanie żadnych dodatkowych cykli tylko dlatego, że chcę, aby mój kod był nieco bardziej czytelny. (Tak, zdaję sobie sprawę, że trzeba zrobić, że kompromis dużo ... ale dla długości łańcucha, to po prostu wydaje się głupie.)
Aktualizacja: Odwrotne ukośniki nie są dokładnie to, co chcę, bo tracisz wcięcia, które rzeczywiście wpływa na styl/czytelność.
Przykład:
if foo
string = "this is a \
string that spans lines"
end
znajdę wyżej trochę trudne do odczytania.
EDIT: Dodałem odpowiedź poniżej; trzy lata później mamy teraz krętą dziedzinę.
Może warto poświęcić chwilę na czynnik z tych ciągów. – Cheezmeister
możliwy duplikat [Ruby: Czy mogę napisać wieloliniowy ciąg bez konkatenacji?] (Http://stackoverflow.com/questions/2337510/ruby-can-can-i-write-multi-line-string-with-no- konkatenacja) – givanse
Nie jest jasne, czy chcesz zachować znaki "\ n" nowej linii, czy nie. Górna odpowiedź ich nie zachowuje, ale twoja odpowiedź brzmi. Pytanie brzmi "bez obnażania nowych linii" - tak, jak mówi opis "[...] muszę rozebrać nowe linie". –