用距离函数驯服 iCalendar 循环事件
2025-04-17

作者在实现一个处理 iCalendar 文件的库时,遇到了处理循环事件的难题。iCalendar 使用复杂的规则来定义循环事件,传统的实现方法通常针对不同的频率和参数编写大量特定逻辑。作者另辟蹊径,将循环规则视为 SQL 查询,并借鉴计算机图形学中签名的距离函数(SDF)的思想,用距离函数来表示事件的发生。这种方法将复杂的规则分解成简单的距离函数,通过迭代计算找到事件的发生时间,避免了大量的条件判断,使得代码更简洁、更易于维护。虽然初始实现效率不高,但作者通过优化,使其能够在毫秒级内处理复杂的循环规则。
(pwy.io)