Większość odpowiedzi tutaj rozwiązuje ten problem w czasie wykonywania, a nie podczas kompilacji.
Lua 5.2 wprowadza sekwencję ucieczkową \z
, aby rozwiązać ten problem elegancko, nie ponosząc żadnych kosztów w czasie wykonywania.
> print "This is a long \z
>> string with \z
>> breaks in between, \z
>> and is spanning multiple lines \z
>> but still is a single string only!"
This is a long string with breaks in between, and is spanning multiple lines but still is a single string only!
\z
przeskakuje wszystkich kolejnych znaków w ciągu aż do pierwszego znaku nie-przestrzeni. Działa to również w przypadku liter nie-wieloliniowych.
> print "This is a simple \z string"
This is a simple string
Z Lua 5.2 Reference Manual
sekwencja ucieczki '\ Z' przeskakuje po rozpiętość białe znaki, włącznie przerwy linii; szczególnie przydatne jest łamanie i wciskanie długich literalnych ciągów do wielu wierszy bez dodawania nowych linii i spacji do zawartości ciągu.
Dziękuję, [[]] było tym, czego szukałem! – bratao
Chciałbym wypowiedzieć się przeciwko używaniu '..' za dużo: Każda pojedyncza konkatenacja spawns nowy ciąg, który potencjalnie może poważnie zaszkodzić wydajności. Jeśli chcesz umieścić wiele małych kawałków razem, umieszczenie ich w tabeli i użycie 'table.concat' jest lepszym rozwiązaniem. – jpjacobs
Każda nowa konkatencja spawnuje nowy ciąg, ale wiele konkatencji w jednym ciągu jest wykonywanych jednocześnie = => spójrz na wynik luac dla powyższego; będzie tylko 1 kod operacyjny CONCAT. – daurnimator