2017-02-28 103 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) 
    }