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

时间:2015-07-13 08:19:58

标签: scala

根据我的理解,部分函数是为输入值子集定义的函数。 所以我应该为DAO使用部分功能。例如:

getUserById(userId: Long): User 

db中始终存在输入userId。所以我可以说它没有定义。当我打电话给这个功能时抬起它。

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

2 个答案:

答案 0 :(得分:3)

当输入数据的某些元素的函数未定义时,使用

public class OrderStepStatusMapping : ClassMap<OrderStepStatus> { public OrderStepStatusMapping() { Table("GLOT_Order_Step_Statuses"); Schema("glot"); Id(x => x.Id, "OrderStepStatusID"); References(x => x.Order).Class(typeof (ServerOrder)).Column("OrderID"); Map(x => x.Step, "StepID").CustomType<int>(); Map(x => x.Status, "StatusID").CustomType<int>(); } (输入数据可能是PartialFunction等。)

对于您的案例Seq是更好的选择:它表示可能缺少返回数据:

Option

答案 1 :(得分:0)

我会避免使用部分函数,​​因为scala使得调用部分函数变得非常容易,就像它是一个完整的函数一样。相反,最好使用一个返回Option的函数,如@Sergey建议的那样;这样,“偏爱”总是明确的。

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