得到了这个简单的循环:
use Config::Simple:from<Perl5>;
my $cfg = Config::Simple.new(syntax => 'ini');
%config{'short_name'} = 'blah';
for %config.kv -> $k, $v {
$cfg.param("%config{'short_name'}.$k", $v);
}
工作正常。但是我想更熟悉其他实现相同目标的方法,哪怕只是为了舒服地阅读其他人的代码。另外,循环似乎是“旧”的学校做事方式,不是很“像Raku”,我需要更舒服地以更高级的方式使用函数。
不管怎样,为了伸展我新的拉库肌肉,我想出了这个一句话作为替代:
map(-> $k, $v { $cfg.param("%config{'short_name'}.$k", $v) }, %config.kv);
它不太易读(至少对我未经训练的眼睛来说),但它有效。
我的预感是有一些好方法可以使这段代码更加简洁易读。有兴趣看看我是否是对的。
>
重写(IMHO,如果变量被更改,for
比map
更适合)
use Config::Simple:from<Perl5>;
my $cfg = Config::Simple.new: syntax => 'ini';
my %config := short_name => 'blah';
$cfg.param: "%config<short_name>\.{.key}", .value for %config;
print $cfg.as_string();
通过set_block
use Config::Simple:from<Perl5>;
my $cfg = Config::Simple.new: syntax => 'ini';
my %config = short_name => 'blah';
$cfg.set_block: %config<short_name>, %config;
print $cfg.as_string();