如题:

我们对Groovy闭包的理解不应该仅限于each等object的自带闭包,使用闭包可以让递归操作更加方便灵活. groovy官网上的闭包例子Fibonacci并不常见, 现在提供一个比较常见的递归打印文件功能.

 

 

  1. def tree 
  2. tree = { file, arg -> 
  3.   println "${'|  ' * arg} - ${file.getName()}\\" 
  4.   file.eachFile() { f -> 
  5.     if(f.directory){ 
  6.         tree(f,(arg+1)) 
  7.     }else
  8.        println "${'|  ' * (arg+1)} - ${f.getName()}" 
  9.     } 
  10.   } 
  11. tree(new File('.'),0)