2017-02-28 13 views
0

私はスカラ座での再帰的なメソッドを実装しようとしていると可変性の問題(私はブランドのためのScala新たなんだ)に実行しています:変更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)が大きくなります。

membersが不変であるように見えるので、ここではcandidatemembersに追加することはできません。どのように再帰的に動作するようにコードをリファクタリングすることができますか?

+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) 
    } 
関連する問題