我有一個昂貴的case語句,它需要命中數據庫以確定一個完整匹配。如果有匹配,從上述調用的結果必須被用來進行進一步的操作:從Scala模式匹配中的昂貴語句別名對象
def intent = {
case request @ GET(Path(Seg(database :: Nil))) if recordsFrom(database) != Nil =>
renderOutput(recordsFrom(database))
case ...
}
我想打電話給recordsFrom(database)
只有一次。在上面的例子中,它被調用兩次。似乎我應該可以在陳述中應用一些別名?
當數據庫不包含記錄時,這將導致匹配。對於這個人爲的例子來說也許很好,但是對於產生的部分函數會產生非常不同的行爲。 –
那又如何?您可以根據您的請求進行匹配,使用數據庫檢索記錄列表,然後測試以查看列表是否爲空,您可以在if語句中處理這兩種情況。模式匹配很酷,但它不是每個問題的答案。 – vptheron