条件函数
以下条件 SequenceIterator 方法将对象的布尔序列应用于输入序列。这些方法属于以下类型: -
- 三元运算符 iif(),它接受两个输入序列参数 then 和 otherwise,并通过应用对象条件序列中的布尔元素生成相同类型的输出序列。
- filter() 函数,它返回与输入序列类型相同的序列,其中仅包含对象条件序列中对应为真元素的那些元素。
- filter_pos() 函数,它返回一个整数序列,其中包含对象条件序列中为真元素的位置。
该操作可以是以下之一:
- public SequenceIterator iif(SequenceIterator then, SequenceIterator otherwise, boolean lazy):根据对象条件序列中元素的布尔值,选择“那么”序列或“否则”序列中的元素。这三个序列以相同的速度遍历(如果使用“那么”序列中的元素,则跳过“否则”序列中的元素,反之亦然)。(更多详情请参阅三元运算符页面。)
- public SequenceIterator filter(SequenceIterator cond):返回与输入类型相同的序列,其中仅包含对象条件序列中对应值为真的元素。
- public SequenceIterator filterPos():返回一个整数序列,其中包含对象条件序列中为真元素的位置。
示例
以下是一个展示条件方法的示例代码片段:
cursor = con.cursor("Quote", "by_sym")
for quote in cursor:
...
last = quote.day.last();
dayit = quote.day.search(DMY(1,MONTH(last),YEAR(last)),
exdb.SeqIteratorBoundary.MCO_SEQ_BOUNDARY_INCLUSIVE,
last,
exdb.SeqIteratorBoundary.MCO_SEQ_BOUNDARY_INCLUSIVE)
openit,closeit = dayit.project('open', 'close')
gtit = closeit.gt(openit)
filtit = gtit.filter(dayit)
...