我应该使用部分函数进行数据库调用吗?

问题描述:

根据我的理解,部分函数是为输入值的子集定义的函数。 所以我应该使用DAO的部分函数。例如:我应该使用部分函数进行数据库调用吗?

getUserById(userId: Long): User 

必定会有不存在分贝的输入userId。所以我可以说它没有定义。当我调用这个函数时将其解除。

如果是,我在哪里停下来。我是否应该对所有未定义的方法使用部分函数,​​比如说为null。

PartialFunction功能时没有定义输入数据的一些元素(输入数据可能Seq等)

对于你的情况Option则采用的是更好的选择:它说,返回的数据可能是不存在的:

getUserById(userId:Long):Option[User] 

我会避免使用部分函数,​​因为scala可以很容易地调用部分函数,​​就像它是一个总函数一样。相反,最好使用返回Option的函数,如@Sergey所示;这种“局部性”总是明确的。

地图scala没有使用null所以我不担心没有为null定义的方法,但肯定值得返回Option的方法,这些方法仅为其一些可能的输入值定义。但更好的是,只接受合适的类型作为输入。例如。如果你有一个只对非空列表有效的函数,它应该采用(scalaz)NonEmptyList作为输入,而不是List