2015-07-13 57 views
0

根據我的理解,部分函數是爲輸入值的子集定義的函數。 所以我應該使用DAO的部分函數。例如:我應該使用部分函數進行數據庫調用嗎?

getUserById(userId: Long): User 

必定會有不存在分貝的輸入userId。所以我可以說它沒有定義。當我調用這個函數時將其解除。

如果是,我在哪裏停下來。我是否應該對所有未定義的方法使用部分函數,​​比如說爲null。

回答

3

PartialFunction功能時沒有定義輸入數據的一些元素(輸入數據可能Seq等)

對於你的情況Option則採用的是更好的選擇:它說,返回的數據可能是不存在的:

getUserById(userId:Long):Option[User] 
0

我會避免使用部分函數,​​因爲scala可以很容易地調用部分函數,​​就像它是一個總函數一樣。相反,最好使用返回Option的函數,如@Sergey所示;這種「局部性」總是明確的。

地圖scala沒有使用null所以我不擔心沒有爲null定義的方法,但肯定值得返回Option的方法,這些方法僅爲其一些可能的輸入值定義。但更好的是,只接受合適的類型作爲輸入。例如。如果你有一個只對非空列表有效的函數,它應該採用(scalaz)NonEmptyList作爲輸入,而不是List

相關問題