2017-02-28 116 views
0

修改斯卡拉参数我想实现在斯卡拉递归方法和正在运行到可变性的问题(我的品牌新的Scala):在递归方法

def findMembersRecursive(path : String, members : Set[String]) : Unit = { 
    val candidates : Set[String] = candidateService.getProspectiveCandidates(path) 

    candidates.foreach { candidate => 
     if(candidate.endsWith("hello")) { 
      members ++= candidate 
     } else { 
      findMembersRecursive(candidate, members) 
     } 
    } 
} 

这样的想法是因为我们递归执行,这组字符串(members)增长。

这里它不会让我加candidatemembers,因为members看起来是不可变的。关于如何重构代码以递归工作的任何想法?

+0

你为什么不做出findMembersRecursive回报成员?为什么你想保留'成员'作为论据? – Nyavro

回答

1

我会实现这个功能是这样的:

def findMembersRecursive(path: String): Set[String] = 
    candidatesService 
    .getProspectiveCandidates(path) 
    .flatMap { 
     case candidate if candidate.endsWith("hello") => Set(candidate) 
     case candidate => findMembersRecursive(candidate) 
    }