configuration - 有效范围的 YAML 配置
问题描述
我有一个 YAML 文件,其中包含我的应用程序的一些配置。现在,一些配置需要及时更改。例如:
2020 年的价值观是:
tax:
federal: 9
provincial: 7
但对于 2021 年,我们需要的是:
tax:
federal: 9.5
provincial: 7.5
如果我只能通过时间切换 yml 文件会很容易,但是 yaml 文件包含许多会在不同时间点更改的配置。另外,我只分配了 1 个 yml 文件来配置我的应用程序,所以这不是一个真正的选择。
所以我的问题是,使用 YAML 表示这一点的最简洁的方法是什么?
我能想到的唯一方法是以下,但我可以看到这非常混乱。
tax:
federal: [20200101-20201231]9;[20210101-20211231]9.5
provincial: [20200101-20201231]7;[20210101-20211231]7.5;
解决方案
您的语法是非法的,您需要将其括在引号中,将其解析为单个标量,然后对其进行后处理。
我建议使用 YAML 的标签系统:您使用标签!datedep
来标记值,例如:
tax:
federal: !datedep { [20200101, 20210101, 20220101]: [9, 7.5] }
provincial: !datedep { [20200101, 20210101, 20220101]: [7, 7.5] }
我将带有单个键值对的 YAML 映射作为值。关键是日期列表,建立其间的范围。该值是应映射到日期之间范围的值列表。
加载 YAML 时,您必须为 tag 提供构造函数!datedep
。这如何工作取决于您的实施。构造函数应根据当前日期选择适当的值。您可以使用 YAML 锚点和别名来引用重复的日期范围,例如:
tax:
federal: !datedep { &y2021 [20200101, 20210101, 20220101]: [9, 7.5] }
provincial: !datedep { *y2021 : [7, 7.5] }
推荐阅读
- javascript - Js中的递归
- node.js - Lint - 如何抑制有关未解析变量的警告
- javascript - deligation.addEventListener 不是函数 - 为什么
- javascript - 使用 json 对象上传 angular 10 和 .net core 5 中的多个文件
- shapefile - 印度国家边界更新 Shapefile 2021
- javascript - Javascript:回调函数与普通函数调用
- python - python selenium html元素选择
- excel - 如何中断工作表停用?
- django - Django REST Framework BasicAuthentication 不用作默认身份验证类
- vba - 在vba中执行数字列表之间的交集