2013-12-12 12 views
9

Jestem nowy na groovy i gradle i zastanawiałem się, czy ktoś wiedział, dlaczego mój scriplet nie działał (edycja faktycznie to działa ale nadal pojawia się ostrzeżenie). Ta sekcja została usunięta ze skryptu build.gradle, a intellij podkreśla to i skarży się, że: "Nie można określić typów argumentów". Każda pomoc będzie miło :)plik build.gradle, zadanie za pomocą << notacja, intellij ostrzega: "Nie można określić typu argumentu"

task hellofun << { 
    [silly:'billy'].each { k, v -> 
     println "$k=$v" 
    } 
} 

EDIT: I złożyli bug request informujące IntelliJ tego problemu

EDIT: widocznie jest to known bug będę aktualizować ten błąd jest raz naprawiono:

+1

To dziwne. Twój kod działa bezbłędnie dla mnie. Jakiej wersji Gradle używasz? Czy zadanie nie powiedzie się, czy też problem polega na tym, że intellij narzeka na to? – silverbeak

+0

huh ... to też działa dla mnie, ale intellij narzeka na to. – coderatchet

+0

Która wersja IntelliJ? Nie można powielać w IntelliJ 13. (IntelliJ 12 ma bardzo ograniczone wsparcie dla Gradle). W każdym razie jest to tylko ostrzeżenie i nie wiem, co masz na myśli, mówiąc, że "mój scriplet nie działał". –

Odpowiedz

2

W języku wysoce dynamicznym, takim jak groovy, gdzie nazwy i symbole są rozwiązywane w dowolny sposób. Trudno byłoby określić ważność dowolnej instrukcji z wyprzedzeniem bez uruchamiania programu . nawet uruchomienie programu teoretycznie nie wyjawi wszystkich możliwych permutacji danych wejściowych, które mogą zmienić ważność środowiska wykonawczego instrukcji.

Pochwalam próbę intelli z tego trudnego problemu i mogę żyć z kilkoma niepoprawnymi ostrzeżeniami składni tu i tam.

2

Do czasu naprawienia błędu IntelliJ istnieje obejście: użyj doFirst zamiast < <.

task hellofun() { 
    doFirst { 
    [silly:'billy'].each { k, v -> 
     println "$k=$v" 
    } 
    } 
} 

Dziękujemy za przesłanie bakcyla :)

+1

To nie jest obejście tego problemu. Należy unikać << ponieważ wiele osób myli konfigurację() {z wykonywaniem() << { –

3

Jeśli są chętni, aby wyłączyć Groovy> Zagadnienia przypisania> Niezgodny przypisania typu kontroli, ostrzeżenie odchodzi.

0

Do obejścia tego problemu należy nazwać został został wskazany przez < < (doLast)

task hellofun() { 
    doLast { 
    [silly:'billy'].each { k, v -> 
     println "$k=$v" 
    } 
    } 
} 
Powiązane problemy