2013-06-19 15 views
15

ho solo una domanda di carattere generaleDifferenza tra 'e "entro Lua

non v'è alcuna differenza con le virgolette singole o doppie virgolette all'interno Lua

Esempio:.?

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

Quando ho programmato in PAWN, un linguaggio simile a C, è possibile utilizzare virgolette singole per i caratteri, ma non stringhe di testo, è necessario utilizzare doppie virgolette per loro.

E se non c'è differenza, quale si consiglia di utilizzare?

Questa domanda è stata probabilmente già risposta, tuttavia non sono riuscito a trovare un argomento già risposto.

Grazie.

+0

Nessuna differenza. Inoltre, se decidi di usare '' 'o' '' per le variabili di array, puoi semplicemente usare la notazione a punti –

+0

Ah ok grazie per la tua rapida risposta, ancora una volta, quale è più comunemente usato? – Bicentric

+0

Basta usare le virgolette singole quando hai le virgolette doppie nella stringa e le virgolette singole quando hai doppie virgolette nella stringa.Puoi anche scappare in entrambe usando il carattere barra rovesciata, quindi non importa quale si sceglie. Per la popolarità, è solo di preferenza perché non importa davvero. –

risposta

19

No. Nessuna differenza, tranne che puoi racchiudere l'altro all'interno di quelli che stai usando.

-- 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?"]] 

Vedere: Strings in Lua per ulteriori informazioni.

+0

Ah ok, ancora grazie per la tua risposta, è molto apprezzato. Tuttavia, mi piacerebbe comunque sapere quale è più comune :) Sto indovinando che il doppio segno di virgolette è semplicemente perché le stringhe in un'ampia varietà di lingue usano virgolette doppie. – Bicentric

+0

Sì, in C, C++, C#, Java e molte altre lingue le virgolette doppie vengono utilizzate per i letterali stringa e le virgolette singole vengono utilizzate per i caratteri letterali. – AtinSkrita

+2

@Bicentric ci stai pensando troppo. Basta usare quello che più si addice alla tua fantasia: non è preferibile l'uno rispetto all'altro. Tendo ad usare '' 'perché non devo tenere un tasto Maiusc supplementare quando lo digito. – greatwolf

1

È possibile trovare facilmente le stringhe Lua cercando in Internet "stringhe lua".

Qui è uno dei risultati: http://www.lua.org/pil/2.4.html

si è liberi di scegliere il proprio stile di citazione, come non fa differenza, ma si deve essere coerente in modo che il codice è più bello da leggere.

Per motivi di preferenza, normalmente utilizzerei virgolette doppie perché Lua utilizza codici escape in stile C. Molti linguaggi di script (Perl, ad esempio) e command shell do fanno la distinzione tra stringhe con virgolette singole e doppie, e sarebbe bello essere un po 'coerenti con queste pratiche quasi standard.

Intendo dire che quando vedo una stringa con quotatura singola devo effettivamente pensare a quale lingua sto leggendo e se i codici di escape sono o meno sostituiti in quella stringa. Con le stringhe a virgolette non devo pensarci, perché come regola generale qualsiasi linguaggio che sostituisce i codici di escape in stile C in una stringa lo farà in una stringa doppia citazione.

+0

Ah grazie anche per la risposta :) – Bicentric

+0

Il PIL che è disponibile online ora è orribilmente obsoleto (delimitatore di parentesi '[['nidificazione da 5.0 è stato sostituito con la sintassi' \ [= * \] 'di solito è meglio fare riferimento al manuale: http://www.lua.org/manual/5.2/manual.html#3.1 – dualed

1

Non c'è alcuna differenza tra i due in Lua, quindi è possibile utilizzare quello che ti piace. Io tendo a distinguere tra loro semanticamente:

  • io uso "double quotes" per le stringhe visibili dall'utente e testo, in fondo ciò che appare sull'uscita o in file
  • Io uso 'single quotes' per stringhe di opzione simile per il passaggio a metodi e generalmente in codice, come io.stdout:setvbuf('no')