条件函数
以下条件方法会将对象的布尔序列应用于输入序列。这些方法主要包括:
- 三元运算符 iif() 和 if():这两个函数接受两个输入序列参数 then 和 else,并通过应用对象条件序列中的布尔元素,生成与输入序列类型相同的输出序列。
- filter() 函数:该函数返回一个与输入序列类型相同的序列,其中仅包含对象条件序列中为 true 的元素。
- filter_pos() 函数:该函数返回一个整数序列,列出对象条件序列中 true 元素的位置。
这些操作可以是以下之一:
iif
iif( then, else)
根据对象条件序列中元素的布尔值选择“则”序列或“否则”序列中的元素。三个序列以相同的速度遍历(如果使用“则”序列中的元素,则跳过“否则”序列中的元素,反之亦然)。(更多详情请参阅三元运算符页面。)
if
if( then, else)
根据对象条件序列中元素的布尔值选择“则”序列或“否则”序列中的元素。与 iif() 不同,未使用的序列中的位置不会改变。(有关更多详细信息,请参阅三元运算符页面。)
filter
filter(input)
返回与输入类型相同的序列,其中仅包含对象条件序列中对应值为真的元素。
filter_pos
filter_pos()
返回一个整数序列,其中包含对象条件序列中真实元素的位置。
示例
以下是一个展示条件方法的示例代码片段:
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)
...