如何处理 groovy 中的 if-else?

how to handles if-else in groovy?

这里我在输入中传递 skipfolders 变量,如果 skipfolders 为真,那么它会打印父路径中的所有文件并跳过子文件夹。 否则 return 所有文件夹中的所有文件也包括子文件夹。这里我写了if-else条件。当我在 FileMaker 中执行此代码时 它执行时没有任何错误并显示 result.but if-else 条件在这里不起作用。

问题:

If-else 条件不起作用 here.it 打印来自 FTP 的所有文件包括 subfolders.skipfolders 条件不起作用。 在这个 return allFiles.join('\n') + '\n'+ allFolderFiles.join('\n')+ '\n' 直接打印并且 skipfolders 条件不起作用。 请帮助如何在 fileMaker groovy.

中正确使用 if-else 条件
start()
def start(){

        boolean skipfolders = false
        def store;
        def ftpClient = new FTPClient()
        ftpClient.connect(server)
        // println(ftpClient.replyString)
        ftpClient.login(user,pass)
        ftpClient.enterLocalPassiveMode()
        FTPFile[] fileslist = ftpClient.listFiles("/")
        FTPFile[] folderfileslist = ftpClient.listFiles("/sample")

  if(skipfolders == false){

       def allFiles = []; 
       for(int i=0; i<fileslist.length; i++){  
       String file_name = fileslist[i].getName()
       String file_timestamp = fileslist[i].getTimestamp().getTime()     
       String s = '|' + file_name+ '|' + '/' +file_name+'|'  +file_timestamp
       allFiles << s       
   }  
      def allFolderFiles = [];
      for(int i=0; i<folderfileslist.length; i++){
      String folderfile_name = folderfileslist[i].getName()
      String folderfile_timestamp = folderfileslist[i].getTimestamp().getTime()
      String s1 = '|' +folderfile_name+ '|' + '/sample' +'|'+folderfile_name+'|'  +folderfile_timestamp
      allFolderFiles << s1
 }
  ftpClient.disconnect()
  return allFiles.join('\n') + '\n'+ allFolderFiles.join('\n')+ '\n'

}
else{
       def allFiles = []; 
       for(int i=0; i<fileslist.length; i++){  
       String file_name = fileslist[i].getName()
       String file_timestamp = fileslist[i].getTimestamp().getTime()     
       String s = '|' + file_name+ '|' + '/' +file_name+'|'  +file_timestamp
       allFiles << s       
   }  
   ftpClient.disconnect()
   return allFiles.enter code herejoin('\n')
  }
}

    enter code here

if anybody having idea please let me know thanks.

对于字符串值,您比较的方式是首选,对于布尔值,您也可以在您的代码中执行以下操作 if..else 打开和关闭似乎不匹配,请检查。

  boolean skipfolders = false
  if(!skipfolders){  // this directly checks the true and false conditions
     // do your stuff here on skipfolders = false
  }else {
     // do your stuff here on skipfolders = true
  }

如果我对问题的理解正确,您想将 skipfolders 变量设置为参数。

如实声明:

boolean skipfolders = false;

因此用户 daggett 在问题评论中提到的 else 永远不会达到。

如果您改为这样做:

start(true) or start(false)
def start(boolean input){
    boolean skipfolders = input;
    ...
}

然后你可以根据你的输入到达else语句。