我想生成一个序列,该序列在上个星期五从星期一到星期四结束,如果序列在星期六和星期日开始,则在上一周的星期五结束。也就是说,假设今天是2018-05-09
,那么上周五是2018-05-04
,如果今天是2018-05-12
,那么最后一个星期五是[[also 2018-05-04
。所以我写:
(Date.today, *.earlier(:1day) ... ( *.day-of-week==5 && *.week[1]+1==Date.today.week[1] )).tail # Output: 2018-05-06
但是结果是2018-05-06
而不是2018-05-04
。然后我使用了Junction:
(Date.today, *.earlier(:1day) ... all( *.day-of-week==5, *.week[1]+1==Date.today.week[1] )).tail # Output: 2018-05-04
为什么第一种情况下的&&
错误? ...运算符说:右侧将有一个终结点,对于“无限”列表(其元素仅按需生成)可以是Inf或*,该表达式将在True时结束序列,或其他元素(例如Junctions)。
&&
运算符怎么了?
*.day-of-week==5 && *.week[1]+1==Date.today.week[1]