2013-03-02 4 views
45

Sono un neofita e sto solo provando a seguire i tutorial e diverse volte ho visto le virgolette singole e doppie mescolate. Volevo solo sapere se c'era una differenza di quando un set dovrebbe essere usato sull'altro. Un esempio di questo è la sezione 6.12 del tutorial - Default tasks:Gradle Singolo vs Virgolette doppie

defaultTasks 'clean', 'run' 

task clean << { 
    println 'Default Cleaning!' 
} 

task run << { 
    println 'Default Running!' 
} 

task other << { 
    println "I'm not a default task!" 
} 

Quindi, vorrei solo sapere se devo prestare attenzione a queste differenze o se sono inter-changable e posso usare sia singolo o doppie virgolette quando si stampano le stringhe in gradle.

risposta

51

Gradle costruire gli script sono scritti in Groovy. Groovy ha letterali stringa con virgolette doppie e virgolette singole. La differenza principale è che doppi apici stringhe letterali stringa supportano interpolazione:

def x = 10 
println "result is $x" // prints: result is 10 

si può imparare di più su Groovy String interpolazione in this o altri articoli Groovy sul web.

+1

Grazie per la chiara spiegazione. Ma ora ho una domanda di follow up, c'è qualche ragione per non usare sempre le virgolette allora? –

+1

Per lo più soggettivi/situazionali come "sembra meglio", "usato per questo stile da un'altra lingua", "voglio usare letterale' $ 'o' "' senza doverli scappare "," più facile da digitare ". Molti utenti di Groovy sembra preferire le virgolette singole per impostazione predefinita, preferisco le virgolette doppie perché mi consentono di aggiungere/rimuovere l'interpolazione String senza modificare le virgolette, inoltre sono abituato a raddoppiare virgolette da linguaggi come Java. –

11

Sì, è possibile utilizzare uno o l'altro. L'unica differenza è che stringhe tra doppi apici possono essere gstrings, che può contenere espressioni valutate come nel seguente esempio tratto da the Groovy documentation:

foxtype = 'quick' 
foxcolor = ['b', 'r', 'o', 'w', 'n'] 
println "The $foxtype ${foxcolor.join()} fox" 
// => The quick brown fox 
+0

I valori letterali stringa a virgola doppia sono 'GString's se contengono un' $'. Altrimenti, sono semplici 'String's. –

+0

Grazie per la correzione. Ho aggiornato la mia risposta. –