如果您已将Prophet升级到2024年第四季度版本,可能已经注意到一个新增的实用功能——除了常规的数字(Number)和文本(Text)类型外,如今您还可以将变量(variable)定义为 enumeration类型了。 (你可以透过视频了解这篇文章的内容)
对于不熟悉枚举(enumeration)的人来说,我们可以将枚数是为一个二维(dual-dimensional)数组。第一维是从0开始的整数序列,第二维是对应的文本值。您可以在这两个维度之间轻松转换——从整数获取文本,或从文本获取整数。
例如,我们为IFRS17的discount rates设置一个名为IFRS_DISC的枚举:
- 第一个配对是0(整数)和“LIR”(文本),表示锁定利率;
- 第二个配对是1(整数)和“VIR”(文本),表示当前利率。
- 我们可以使用类似对象的表示法引用它们:IFRS_DISC.LIR和IFRS_DISC.VIR,这类似于VBA中的object oriented programming(“OOP”)方式。
如果我们需要进行整数和文本的转换的话,我们需要采用Prophet提供的转换函数。例如,您可以使用ENUM_TO_INT和ENUM_TO_TEXT从IFRS_DISC.LIR获取0和“LIR”。您还可以使用INT_TO_ENUM和TEXT_TO_ENUM将整数或文本值转换为枚举。
那么,何时在Prophet编码中使用枚数呢?在我看来,枚举使预设条件与逻辑更具可读性。与其使用0、1或2等原始值,不如使条件更清晰。例如:
- 不使用枚数:IF CALC_LOOP = 0 THEN
- 使用枚数:IF CALC_LOOP = ENUM_TO_INT(DISC_TYP.LIR) THEN
使用枚举使逻辑更透明——您无需记住数字代表什么。此外,由于枚举必须在workspace objects中定义,这也有助于减少人为疏忽的错误。
由于Prophet现在支持将枚举作为变量类型,我们就可以进一步简化采用枚举的预设条件与逻辑。让我们检视之前的例子:
- 您可以创建一个新变量,自动将CALC_LOOP转换为枚数,例如CALC_DISC。
- 然后,您可以简化预设条件的编码:IF CALC_DISC = DISC_TYP.LIR THEN,并无需进行任何的转换。
还有一个有用的应用场景——枚举变量可以帮助处理需要根据t或CALC_LOOP变化的表后缀。众所周知,Prophet中的文本变量不能直接依赖于t或CALC_LOOP。但有了新的CALC_DISC变量,您也可以这样定义列表的名称:"ifrs_disc_" + ENUM_TO_TEXT(CALC_DISC) + "_pc"。
总结
虽然Prophet新增将枚数作为变量类型是一个小改进,但是它是可以改善我们编码的技术和代码可读性。使用枚数不但使我们的代码更简洁、更易于理解,并减少错误。如果您还未尝试使用枚数,我建议您不妨试一试——这可能是为您的Prophet编码带来更多结构和清晰度的简单方法。
相关文章:
- Prophet建模技术(1):Enumerations
- Prophet建模技术(2):新保单预测

评论
发表评论