2013-06-19 27 views
15

mam tylko pytanie ogólneRóżnica między "i" w Lua

Czy jest jakaś różnica stosując pojedyncze i podwójne cudzysłowy w ciągu Lua

. Przykład:?

require('test.lua') 
require("test.lua") 

Kiedy zaprogramowany w języku PAWN, języku podobnym do C, pojedyncze znaki cudzysłowu mogą być używane do znaków, ale nie do ciągów tekstu, musisz użyć podwójnych cudzysłowów, musisz użyć podwójnych cudzysłowów,

A jeśli nie ma różnica, która z nich jest zalecana do użycia?

Na to pytanie najprawdopodobniej już udzielono odpowiedzi, ale nie udało mi się znaleźć tematu, na który już udzielono odpowiedzi.

Dziękuję.

+0

Bez różnicy. Także jeśli decydujesz się na użycie zmiennych '' lub '' 'dla zmiennych tablicowych, możesz po prostu użyć notacji kropki. –

+0

Ah ok, dziękuję za szybką odpowiedź, znowu, która z nich jest bardziej popularna? – Bicentric

+0

Po prostu użyj pojedynczych cudzysłowów gdy masz podwójne cytaty w łańcuchu i pojedyncze cudzysłowy, gdy masz podwójne cudzysłowy w ciągu znaków, możesz także uciec w obu z nich używając znaku ukośnika odwrotnego, więc nie ma znaczenia, który wybierzesz. na preferencji, ponieważ naprawdę nie ma znaczenia. –

Odpowiedz

19

Nie. Bez różnicy, z wyjątkiem tego, że możesz zamknąć drugie w tych, których używasz.

-- No difference between these 
myStr = "Hi!!" 
myStr = 'Hi!!' 
myStr = [[Hi!!]] -- The 'weird' way to make a string literal IMO... 

-- Double quotes enclosed in single quotes  
myStr = 'My friend said: "Hi!!"' 

-- Single quotes enclosed in double quotes 
myStr = "My friend said: 'Hi!!'" 

-- Single and double quotes enclosed in double brackets 
myStr = [[My friend said: "What's up?"]] 

Patrz: Strings in Lua, aby uzyskać więcej informacji.

+0

Ah w porządku, jeszcze raz dziękuję za odpowiedź, jest to bardzo doceniane. Jednak nadal chciałbym wiedzieć, który z nich jest bardziej popularny :) Zgaduję, że podwójny cudzysłów jest po prostu dlatego, że łańcuchy w szerokiej gamie języków używają podwójnych cudzysłowów. – Bicentric

+0

Tak, w C, C++, C#, Java i wielu innych językach podwójne cudzysłowy są używane w literałach ciągów, a pojedyncze cudzysłowy są używane do literałów znaków. – AtinSkrita

+2

@Bicentric za dużo o tym myślisz. Po prostu użyj tego, który pasuje do Twojego gustu - nie ma preferowanego jednego nad drugim. Używam '' ', ponieważ nie muszę trzymać dodatkowego klawisza shift, kiedy go piszę. – greatwolf

1

Możesz dowiedzieć się o struny Lua z łatwością, przeszukując internet pod kątem "struny lua".

Oto jeden wynik: http://www.lua.org/pil/2.4.html

Jesteś wolny, aby wybrać swój własny styl cytowania, a to sprawia, że ​​nie ma różnicy, ale powinno być spójne, tak, że kod jest ładniejszy czytać.

W normalnych warunkach zwykle używam podwójnych cudzysłowów, ponieważ Lua używa kodów ewakuacyjnych w stylu C. Wiele języków skryptów (na przykład Perl) i powłoki poleceń do rozróżnia ciągi jedno- i podwójnie cytowane i byłoby miło być trochę spójnym z tymi quasi-standardowymi praktykami.

Mam na myśli to, że gdy widzę ciąg cytowany w jednym cudzysłowie, muszę pomyśleć o tym, który język czytam i czy w tym łańcuchu są wstawiane kody escape. Z podwójnymi cudzysłowami nie muszę się nad tym zastanawiać, ponieważ z reguły dowolny język, który zamienia kody ewakuacyjne w stylu C w łańcuchu, robi to za pomocą ciągu podwójnego.

+0

Ach, dziękuję za odpowiedź również :) – Bicentric

+0

PIL, który jest dostępny online jest teraz strasznie nieaktualny (nawias-ogranicznik '[[' zagnieżdżanie z wersji 5.0 został zastąpiony przez '\ [= * \]' zazwyczaj lepiej jest zapoznaj się z instrukcją: http://www.lua.org/manual/5.2/manual.html#3.1 – dualed

1

Nie ma różnicy między tymi dwoma w Lua, więc możesz użyć tego, co chcesz. I mają tendencję do różnicowania między nimi semantycznie:

  • używam "double quotes" dla użytkownika widoczne strun i tekst, w zasadzie na wyjściu lub w plikach
  • używam 'single quotes' dla Option jak struny do przejścia do metod i pojawia się niezależnie od ogólnie w kodzie, jak io.stdout:setvbuf('no')