在JavaScript中,我们可以这样做:在斯卡拉
value = f1() || f2() || f3();
这将调用F1,并将其分配给值,如果结果不为空。 只有当结果为空时,它才会调用f2,如果它不为null,则将其赋值为值。 ...
的一种方式在Scala中实现,这是这里给出:How to make this first-not-null-result function more elegant/concise? 创建调用每个函数,直到没有空一getFirstNNWithOption功能:
value = getFirstNNWithOption(List(f1 _, f2 _, f3 _))
然而,这并不像你一样的JavaScript ||运营商,这更加灵活。例如:
value = f1() || f2(3) || f3(44, 'ddd') || value4;
有没有办法在scala中实现这一点?
请阅读本,其中链接是很好的解释。 http://daily-scala.blogspot.com/2010/02/chaining-options-with-orelse.html – 2012-01-04 11:22:27
@dave好点,thx,更新! – 2012-01-04 17:31:40
这可能是值得的内联块,否则所有这些通过名称参数调用... – 2017-06-13 05:20:50