根据我的理解,部分函数是为输入值子集定义的函数。 所以我应该为DAO使用部分功能。例如:
getUserById(userId: Long): User
db中始终存在输入userId
。所以我可以说它没有定义。当我打电话给这个功能时抬起它。
如果是,我在哪里停止。我应该对所有未定义的方法使用部分函数,比如null。
答案 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
。