gpt4 book ai didi

perl - 是否有用于在运行时将 YAML 文件动态转换为 Moose 对象的 Perl 模块?

转载 作者:行者123 更新时间:2023-12-04 22:51:46 25 4
gpt4 key购买 nike

我一直在尝试找到一个 Perl 模块,它可以将 YAML 文件转换为 moose 对象,而无需像使用 MooseX::YAML 时似乎需要做的那样预先声明结构。 .有谁知道这样的模块(或脚本)?

最佳答案

不。

Moose 类、它们的属性以及属于它们的任何其他东西,都有很多附加到它们的元数据。您无法从单个实例的数据中推断出所有元数据。

我假设,给定一个 yaml 文档

---
foo: 42
bar: ['moo', 'kooh']

您会期望并反对响应对 foo 的调用的响应。和 bar方法,返回各自的值。但是这些访问器应该如何表现呢?它们应该是简单的阅读器方法,还是也允许写作?他们是否应该针对任何类型的类型约束进行验证?等等

如果您真正需要的只是使某些未受祝福的数据结构像对象一样可访问,请查看 Data::Hive , Hash::AsObject , 和类似的模块。

如果您真的想构建适当的 Moose 类,并且对所涉及的猜测没有问题,或者碰巧在某个地方有必要的元数据可用,那么您可以使用元协议(protocol)。
my $class = Moose::Meta::Class->create_anon_class(
attributes => [map {
# your particular set of assumptions here
Moose::Meta::Attribute->new($_ => (is => 'ro', ...))
} keys %{ $deserialized_yaml }],
);

my $instance = $class->name->new($deserialized_yaml);
$instance->$some_key_in_the_yaml_document;

关于perl - 是否有用于在运行时将 YAML 文件动态转换为 Moose 对象的 Perl 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com