dini: 如何 return 键,而不是键值?

dini: how to return key, but not key value?

我需要 return 键列表,但下一个代码 return 我只需要键值。

string confpath = buildPath(getcwd, "config.ini");
if (!exists(confpath))  throw new Exception("ERROR: config.ini do not exists");
auto config = Ini.Parse(confpath);

foreach (key; config.keys())    
{
    writeln(key);
}

config.ini:

images = C:\images
photos = D:\photos
pictures = E:\stuff\pictures

预期输出:

images
photos
pictures

代码输出:

C:\images
D:\photos
E:\stuff\pictures

我查看了 sources,但没有找到我可以 return 只有键的地方。

在dini中,keys 属性 returns _keys关联数组,这是一个 字符串[字符串].

所以你的 foreach 应该是:

foreach (key, value; config.keys())    
{   
    writeln(key);
} 

或者,您可以调用关联数组键 属性 以仅获取键。

编辑: IMO,这里的命名有点混乱。我个人会调用 dini 的 keys 函数 "asMap" 或类似的东西,很明显你会得到 keys=values.

的映射

如果您使用我的 ini 包装器,您可以 return 通过来自 IniSection 的 .keys 的键。 IMO "dini" 不是很好,它提供了一个 "non-userfriendly" inifile 包装器。此外,它不遵循 IMO ini 包装器绝对应该遵循的 SafeD,因为您不需要指针来解析文本格式。

例如

auto keys = ini.getSection("Root").keys;

或 .values 为值。

你可以在这里得到它: https://github.com/BaussProjects/baussini/