簡體   English   中英

Gradle / Groovy語法混亂

[英]Gradle/Groovy syntax confusion

誰能解釋/評論這部分Groovy代碼?

task copyImageFolders(type: Copy) {
    from('images') {
        include '*.jpg'
        into 'jpeg'
    }

    from('images') {
        include '*.gif'
        into 'gif'
    }

    into 'build'
}

更具體地講from方法 這是

from(sourcePaths)

或者

from(sourcePath, configureAction)

如果是帶有2個參數的那個,為什么要這樣寫而不是這樣:

 from('images', {
     include '*.jpg'
     into 'jpeg'
 })

簡短的答案是它from(sourcePath, configureAction)調用。

Groovy在很多情況下都有可選的括號,並接受括號外的最后一個參數(如果是閉包),在這種情況下,這就是您要傳遞給from()的閉包。

是一篇很好的博客文章,解釋了如果需要更多示例,可以向Groovy中的閉包傳遞給方法的不同方式,並且示例提供了更多可選括號的示例。

它是語法糖 ,使內容更易於閱讀(對於Gradle配置非常有用)

在這種情況下,所有內容都與括號有關。

當閉包是方法調用的最后一個參數時(例如使用Groovy的each {}迭代機制時),您可以將閉包放在右括號之外,甚至可以省略括號:

list.each( { println it } )
list.each(){ println it }
list.each  { println it }

就您而言,以下所有內容都可以正常運行:

from('images', {
    include '*.jpg'
    into 'jpeg'
})

from('images') {
    include '*.gif'
    into 'gif'
}

from 'images', {
    include '*.gif'
    into 'gif'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM