Virgola come separatore contro virgola come delimitatore

12

In questo video , l'oratore dice:

"Some people get confused about how commas work. They think they should be delimiters rather than separators. Now you can think about them either way."

Non capisco la differenza tra un delimitatore e un separatore (se ce n'è uno). L'implicazione nel video è che ora (che le virgole sono valide), si può pensare a loro come delimitatori, piuttosto che come separatori ...

La lingua in questione è JavaScript. Da quanto ho capito, il token virgola ha due significati:

  • come operatore (usato raramente)
  • come separatore (negli argomenti e negli elenchi di parametri, negli array e negli oggetti letterali, ecc.)

Non sono sicuro di come si inserisce un delimitatore di virgola in questo ...

    
posta Šime Vidas 30.12.2011 - 21:22
fonte

2 risposte

15

Se consideri la virgola come un separatore, usi una virgola tra due elementi di una sequenza per separarli, se lo consideri come un delimitatore, lo metti dopo ogni elemento per indicare dove finisce un oggetto. Vedi gli esempi qui sotto:

Virgola come separatore

var myCars = ["Saab", "Volvo", "BMW" ];

Virgola come delimitatore

var myCars = ["Saab", "Volvo", "BMW", ];

Penso che il video dica che puoi pensare a virgole sia come separatori che come delimitatori perché entrambi gli esempi sopra sono validi. D'altra parte in Javascript è possibile utilizzare la virgola come separatore solo nell'elenco dei parametri di una funzione, ad es.

foo(a, b, c) // separator, OK

è valido mentre

foo(a, b, c,) // delimiter, NOT OK!

non è valido.

Modifica

Per quanto ho capito, secondo la pagina di wikipedia un separatore è un caso speciale di un delimitatore , ovvero uno che viene posto tra le diverse aree di testo i cui confini bisogno di essere segnato In effetti, la pagina wikipedia definisce valori virgola- separati come esempio di delimitatore. Quindi, in generale, puoi utilizzare i delimitatori in diversi modi: prima, dopo, su entrambi i lati della porzione di testo da contrassegnare.

Il motivo per cui ho interpretato delimiter come "marker che viene inserito dopo un elemento" nel contesto Javascript era motivato dall'esempio letterale dell'array, che è valido anche per C, C ++ e Java ( Penso di aver visto almeno una domanda sullo stack overflow riguardante questo argomento).

Un altro esempio di uso simile ma diverso di un carattere è quello del punto e virgola come delimitatore di istruzioni (C, C ++, Java, Ada, ...) e come separatore di istruzioni (Pascal). Pertanto

if (a > 0)
    printf("Positive\n");
else
    printf("Non positive\n");

è il codice C corretto mentre

IF a > 0 THEN
    WriteLn('Positive'); (* Syntax error here! *)
ELSE
    WriteLn('Non positive');

non è un codice Pascal corretto.

Forse terminatore sarebbe un termine migliore / meno ambiguo di delimitatore ? Per esempio. si potrebbe formulare la citazione come segue: "Alcune persone si confondono su come funzionano le virgole, pensano che dovrebbero essere elementi terminatori piuttosto che elementi separatori . Ora (in molti casi) puoi pensarci in entrambi i modi. "

    
risposta data 30.12.2011 - 21:45
fonte
7

Un separatore verrebbe inserito tra due valori, separandoli.

one,two,three

Un delimitatore delimitarebbe un campo - sarebbe su entrambi i lati.

,one,two,three,

Se presa in questo modo, fa poca differenza, purché si possano estrarre i campi separati.

Questo è un problema completamente diverso da quello dell'uso di una virgola in un linguaggio di programmazione come javascript. Si tratta di delimitare / separare i valori all'interno di una stringa.

    
risposta data 30.12.2011 - 21:41
fonte

Leggi altre domande sui tag