2010-03-12 17 views
7
println args 

println args.size() 

println args.each{arg-> println arg} 

println args.class 

if (args.contains("Hello")) 
    println "Found Hello" 

kiedy biegł dać następujący błąd:jak znaleźć jeśli Groovy args zawiera konkretny ciąg

[hello, somethingelse] 
2 
hello 
somethingelse 
[hello, somethingelse] 
class [Ljava.lang.String; 
Caught: groovy.lang.MissingMethodException: No signature of method: [Ljava.lang. 
String;.contains() is applicable for argument types: (java.lang.String) values: 
[Hello] 

dlaczego nie mogę zrobić contains?

Odpowiedz

14

Ponieważ args jest String[] ale nie List<String>

Można użyć

if (args.grep('Hello')) 
    println "Found Hello" 
+0

Proszę spojrzeć na nieco podobny problem [tutaj] (http://stackoverflow.com/questions/10345795/check-a-lists-value-contains-in-a-string) – abi1964

1

To dlatego args jest tablicą String (podobnie jak w Javie), a nie String, spojrzeć na wynik od:

print args.getClass() 

>>class [Ljava.lang.String; 

obwieszczeniu [l oznaczenie.

Regularne String skutkowałoby:

>>class java.lang.String 

Groovy pojemniki nie mają contains() operacji (String robi), jednak java.lang.Object z Groovy SDK ma grep() operację (pokazane na pierwszej odpowiedzi).

Powiązane problemy