web-dev-qa-db-ja.com

Gradleシングルとダブルクォート

私はgradleが初めてで、現在はチュートリアルに従うだけで、一重引用符と二重引用符が混在しているのを何度も見ています。あるセットを他のセットと比較して使用する場合に違いがあるかどうかを知りたかっただけです。この一例は、チュートリアルのセクション6.12です。 デフォルトタスク

defaultTasks 'clean', 'run'

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

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

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

したがって、これらの違いに注意を払う必要があるのか​​、それらが相互に変更可能であり、gradleで文字列を印刷するときに一重引用符または二重引用符を使用できるのかを知りたいだけです。

58
Dan W

GradleビルドスクリプトはGroovyで記述されています。 Groovyには、二重引用符と単一引用符の両方の文字列リテラルがあります。主な違いは、二重引用符で囲まれた文字列リテラルが文字列補間をサポートすることです。

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

Groovy String補間の詳細については、 this またはWeb上の他のGroovyの記事をご覧ください。

65

はい、どちらでも使用できます。唯一の違いは、二重引用符で囲まれた文字列をGStringsにすることができることです。GStringsには、 Groovyドキュメンテーション から取得した次の例のような評価式を含めることができます。

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

Gradleによると docs

ビルドスクリプトリストのプレーン文字列に一重引用符を付ける

これは主にガイド全体の一貫性を確保するためですが、一重引用符は二重引用符よりもノイズが少ないです。文字列に埋め込み式を含める場合にのみ二重引用符を使用します。

2
Julian A.

単一引用符で囲まれた文字列は、単一引用符で囲まれた一連の文字です。お気に入り :

def str='a single quoted string'
println str

出力:

a single quoted string

一方、二重引用符で囲まれた文字列を使用すると、-文字列補間を使用できます。ここでは、ローカル変数を参照するプレースホルダーを持つ文字列があります。

def name = 'Guillaume' // a plain string
def greeting = "Hello ${name}"

出力:Hello Guillaume

コードで、タスク名を印刷する場合。その場合、二重引用符を使用する必要があります。

defaultTasks 'clean', 'run'

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

task run << {
    println "Default Running $run.name!"
    // here Double Quotes are required to interpolate task-name
}

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