各サイクルで同じ要素を返しません。スカラ:私は、次の要素を持つScalaのリストを持っている
Worker("W1", "Worker 1", List(Office 1, Office 2))
Worker("W2", "Worker 2", List(Office 1, Office 3, Office 4, Office 5))
Worker("W3", "Worker 3", List(Office 3, Office 5))
Worker("W4", "Worker 4", List(Office 2, Office 4))
そして、私はこの機能を持っている:
def setOffice(office: Office.Office, totalWorkers: List[Worker]): Worker = {
totalWorkers.find(_.offices.contains(office)).getOrElse(null) }
}
それはサイクル内で、サイクルの各ループで3回呼び出されます(機能的アプローチではありませんが、この場合は重要ではありません)。
私は関数はそれのリストでoffice
を持っており、この機能は、しかし私は関数が各サイクルで異なる結果を返すようにしたいと私がやろうとして成功しておりませんだけで、を行い、最初の要素Worker
を返すようにしたいですそう。
setOffice("Office 1", totalWorkers)
setOffice("Office 2", totalWorkers)
setOffice("Office 3", totalWorkers)
それが返されます:1サイクルで機能は、このパラメータで3回呼び出された場合例えば
、
Worker 1
Worker 1
Worker 2
しかし、私はそれを返すようにしたい
Worker 1
Worker 4
Worker 2
私は変数を使って簡単に行うことができますが、私はvar's
を使いたくないので、私はそれをしたい機能的な方法。
どうすればいいですか?
この関数を呼び出すたびに(Officeのリストから既に見つかっているオフィスを削除して)作業者を変更する必要があるように思えますが、これは関数言語の参照透過コンポーネントとは異なります。https:// stackoverflow .com/questions/4847818/referential-transparency – Tanjin