Gradle 单引号和双引号
Posted
技术标签:
【中文标题】Gradle 单引号和双引号【英文标题】:Gradle Single vs Double Quotes 【发布时间】:2013-02-16 17:45:58 【问题描述】:我是 gradle 的新手,目前只是尝试按照教程进行操作,并且有好几次我看到单引号和双引号混合在一起。我只是想知道何时应该使用一套而不是另一套。这方面的一个例子是教程的第 6.12 节 - Default tasks:
defaultTasks 'clean', 'run'
task clean <<
println 'Default Cleaning!'
task run <<
println 'Default Running!'
task other <<
println "I'm not a default task!"
所以,我想知道我是否应该注意这些差异,或者它们是否可以互换,并且在 gradle 中打印字符串时可以使用单引号或双引号。
【问题讨论】:
***.com/questions/6761498/… 【参考方案1】:Gradle 构建脚本是用 Groovy 编写的。 Groovy 有双引号和单引号字符串字面量。主要区别在于双引号字符串字面量支持字符串插值:
def x = 10
println "result is $x" // prints: result is 10
您可以在this 或网络上的其他 Groovy 文章中了解有关 Groovy 字符串插值的更多信息。
【讨论】:
感谢您的明确解释。但是现在我有一个后续问题,有什么理由不总是使用双引号吗? 大部分是主观/情境性的,例如“看起来更好”、“习惯了另一种语言的这种风格”、“想要使用文字$
或 "
而不必逃避它们”、“更容易输入”。默认情况下,许多 Groovy 用户似乎更喜欢单引号。我更喜欢双引号,因为它们允许我在不更改引号的情况下添加/删除字符串插值。我也习惯用双引号来引用 Java 等语言。【参考方案2】:
是的,您可以使用其中一种。唯一的区别是双引号字符串可以是 GStrings,它可以包含评估表达式,如下面的例子,取自 the Groovy documentation:
foxtype = 'quick'
foxcolor = ['b', 'r', 'o', 'w', 'n']
println "The $foxtype $foxcolor.join() fox"
// => The quick brown fox
【讨论】:
双引号字符串文字是GString
s 如果它们包含 $
。否则,它们是普通的String
s。【参考方案3】:
根据gradledocs:
在构建脚本列表中为纯字符串使用单引号
这是 主要是为了确保指南之间的一致性,但单引号也是 比双引号少一点噪音。如果您只使用双引号 想要在字符串中包含一个嵌入的表达式。
【讨论】:
那个指南和指南好像不见了。 @DaveL。是的,我在其他任何地方都找不到。 在这里找到了一些类似的指导 - groovy-lang.org/style-guide.html "最后但并非最不重要的一点是,当您需要字符串常量时,更喜欢使用单引号字符串,而当您明确依赖字符串插值时,请使用双引号字符串。" imo,混合比只使用双引号嘈杂得多。【参考方案4】:单引号字符串是由单引号包围的一系列字符。 喜欢:
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!"
【讨论】:
以上是关于Gradle 单引号和双引号的主要内容,如果未能解决你的问题,请参考以下文章