在https://gist.github.com/satyagraha/897e427bfb5ed203e9d3054ac6705704我已經發布了一個看起來合理的Scala貓驗證方案,但我還沒有找到一個非常整潔的解決方案。在斯卡拉貓驗證,如何可以結合訂購的驗證
本質上,有兩個階段的驗證,其中個別字段驗證,然後調用一個類構造函數,可能會由於內部檢查而拋出(一般來說,這可能不是我的控制權改變,因此異常處理碼)。如果任何字段驗證失敗,我們希望不要調用構造函數,而且還要將任何構造函數失敗合併到最終結果中。 「快速失敗」絕對就在這裏進行兩階段檢查。
這是一種flatMap
問題,其中cats.data.Validated
框架似乎通過cats.data.Validated#andThen
操作處理。但是,我無法找到一個特別簡潔的解決方案,正如您在代碼中看到的那樣。 cats.syntax.CartesianBuilder
有相當數量的操作可用,我不清楚如何將其與andThen
操作鏈接。
任何想法歡迎!請注意,有一個貓問題https://github.com/typelevel/cats/issues/1343這可能是相關的,不確定。
這看起來像一個很好的解決方案,並且可以擴展到更一般的情況。謝謝! – satyagraha