1
我是功能編程的新手,而且正在閱讀本書。它基本上說,如果你的代碼包含「var」,這意味着你仍然在以一種迫切的方式進行操作。我不知道如何將我的代碼更改爲功能方式。請建議。如何將此代碼更改爲scala中的函數式編程?
所以基本上這段代碼所做的就是處理一些文本並使用正則表達式從「taggedText」中提取特定文本並將其添加到列表中並將列表轉換爲json。
val text = params("text")
val pattern = """(\w+)/ORGANIZATION""".r
var list = List[String]()
val taggedText = processText(text)
pattern.findAllIn(taggedText).matchData foreach {
m => list ::= m.group(1)
}
pretty(render(list)) // render to json
作爲一個更一般的規則,在功能上建立一個數據結構Scala通常最好使用「map」,「flatMap」或「fold」來按難度遞增的順序完成。這些變體(「collect」,「groupBy」,「foldMap」)有一些變體,在某些情況下可能很方便,但作爲一般規則,「map」,「flatMap」和「fold」可以讓你在需要的地方走。 –
如果這些方法對你來說是新的,我建議讓步。您可以使用for理解併產生結果集合。在幕後,yield將被轉換爲map,flatmap,filter等等。 –