2015-12-08 2 views
3

Я думал вернуть карту с несколькими списками каталогов. Но самое первое вызвало предупреждение для меня:Почему этот код предупреждает о недоступности в Groovy?

def enlistFiles() { 

    return 
     [downloadFolder: downloadFolder.listFiles(new FileFilter() { 
      @Override 
      boolean accept(File file) { 
       return !file.isDirectory() 
      } 
     })] 

} 

"Код недостижим"

Почему?

+9

Из необязательных запятой, символ новой строки в 'return' линии интерпретируется как конец заявления. Итак, у вас есть 2 утверждения: один «возврат», а затем недостижимая карта. – melix

+0

Позор на моей голове, спасибо! :) – Dims

+1

@melix вы должны опубликовать это как ответ. [Черт] (http://robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/)! – Will

ответ

1

Все, что находится под строкой 3, не будет выполнено. Ключевое слово возврата не должно сопровождаться разрывом строки. Ваш код должен быть:

def enlistFiles() { 
    return [downloadFolder: downloadFolder.listFiles(new FileFilter() { 
      @Override 
      boolean accept(File file) { 
       return !file.isDirectory() 
      } 
     })] 

}