加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

是否有一个Perl模块用于在运行时动态地将YAML文件转换为Moose对

发布时间:2020-12-15 23:23:23 所属栏目:大数据 来源:网络整理
导读:我一直在尝试找到一个Perl模块,它将YAML文件转换为moose对象,而不必像使用 MooseX::YAML时那样预先声明结构.有没有人知道这样的模块(或脚本)? 解决方法 别. Moose类,它们的属性以及属于它们的任何其他东西都附带了大量的元数据.您无法从单个实例的数据推断
我一直在尝试找到一个Perl模块,它将YAML文件转换为moose对象,而不必像使用 MooseX::YAML时那样预先声明结构.有没有人知道这样的模块(或脚本)?

解决方法

别.

Moose类,它们的属性以及属于它们的任何其他东西都附带了大量的元数据.您无法从单个实例的数据推断出所有元数据.

我假设,给出一个yaml文件

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

你期望和对象回来响应对foo和bar方法的调用,返回相应的值.但那些访问者应该如何表现呢?它们应该是简单的读者方法,还是允许写作?他们应该验证任何类型的typeconstraint吗?等等

如果您真正需要的是使某些未经处理的数据结构像对象一样可访问的内容,请查看Data::Hive,Hash::AsObject和类似的模块.

如果你真的想要构建适当的Moose类,并且要么参与猜测,或者碰巧在某个地方有必要的元数据,那么你可以使用元协议.

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读