如何在INI配置文件中设置布尔值?



我已经看到了用于在INI文件中设置布尔值的各种方法:

  • variable = true
  • variable = 1
  • variable = on
  • variable = yes

哪种方式最规范、最常见和/或最受欢迎?

INI 文件没有规范,但无论它的价值如何,我将列出我所知道的语言的一些实现的行为。

Python 的内置configparser模块提供了一个行为如下getboolean

接受的值...是'1''yes''true''on',导致此方法返回True,以及'0''no''false''off',导致它返回False

另一方面,在PHP的parse_init_file中:

字符串值">true"、">on"和"yes">将转换为TRUE。"假"、">关闭"、">"和"无">被视为

同时,.NET 没有对 INI 解析的内置支持,但其最流行的 INI 解析库 ini-parser 不支持自动解析值,并将它们全部作为字符串返回。它的入门示例显示了使用 .NET 的Boolean.Parse,它将接受字符串"true""false"(任何大写),并在给定任何其他内容时抛出异常。

总之:INI解析器的不同实现在这个问题上绝对没有一致性。

我建议:

  • 如果您只打算使用单个解析器解析您的 INI,请检查该解析器的行为方式并精心制作您的 INI 以适应其特定实现。
  • 如果您需要支持广泛的解析器(例如,语言互操作性),那么要么完全放弃 INI 作为一种格式,要么完全避免使用某些解析器理解的任何魔术布尔值,而是坚持10

这取决于 ini 文件的解析器。 这些值始终是字符串。

true/false:在 C# 中,我可以将真和假字符串直接转换为布尔值。等于可读性和易于转换。更少的代码。

0/1 :在转换为布尔值之前,我必须将字符串 0 和 1 转换为 int。较小的 ini 文件大小。可读性较差。更多代码。

是/否和开/关我将不得不使用 if/switch 语句。 可读。 更多代码。

我的首选方式是真/假。对象序列化为 true/false,您可以将 true/false 与 sql 位类型一起使用,即使它存储为 0/1。因此,唯一的缺点是在大多数情况下可能很小的大小。

最新更新