Scala减少代码重复

高阶函数可以把其它函数当作函数参数,帮助我们减少代码重复,例如:

object FileMatcher {
  private def fileHere = (new File(".\file").listFiles())
  
  def fileEnding(query : String)  = {
    for(file <- fileHere if file.getName.endsWith(query))
      yield file
   
  }
  
  def fileMathching(query: String, matcher:(String, String) => Boolean) = {
    for(file <- fileHere if matcher(file.getName, query))
      yield file
  }
  
  def fileEnding2(query : String) = fileMathching(query, _.endsWith(_))
  
  def fileContains(query : String) = fileMathching(query, _.contains(_))
  
  def main(args: Array[String]): Unit = {
    
    fileEnding2(".scala").foreach { println } 
  }
}
View Code
原文地址:https://www.cnblogs.com/jiang-Xin/p/5736578.html