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

【讨论】:

双引号字符串文字是 GStrings 如果它们包含 $。否则,它们是普通的Strings。【参考方案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 单引号和双引号的主要内容,如果未能解决你的问题,请参考以下文章

数据库插入语句单引号和双引号区别

单引号和双引号有啥区别?

浅谈PHP中单引号和双引号到底有什么区别呢?

python里的单引号和双引号有啥区别

SQL查询语句中单引号和双引号的问题

SQL查询语句中单引号和双引号的问题