内容

名称

Test2::Util::ExternalMeta - 允许第三方工具安全地将元数据附加到您的实例。

描述

此包允许您定义一种清晰且一致的方式,让第三方工具可以将元数据附加到您的实例。如果您的对象使用此包并导入其方法,则第三方元数据将有一个安全的地方存放。

概要

package My::Object;
use strict;
use warnings;

use Test2::Util::ExternalMeta qw/meta get_meta set_meta delete_meta/;

...

现在使用它

my $inst = My::Object->new;

$inst->set_meta(foo => 'bar');
my $val = $inst->get_meta('foo');

数据存储在哪里?

此包假设您的实例是祝福的哈希引用,如果事实并非如此,它将无法正常工作。它将存储所有元数据到您的对象哈希中的 _meta 键中。如果您的对象在其底层哈希中使用 _meta 键,则会发生冲突,您将无法使用此包。

导出

$val = $obj->meta($key)
$val = $obj->meta($key, $default)

这将获取指定元 $key 的值。通常,当 $key 没有值时,这将返回 undef,但是您可以指定一个 $default 值,以便在没有设置值时设置它。

$val = $obj->get_meta($key)

这将获取指定元 $key 的值。这没有 meta()$default 开销。

$val = $obj->delete_meta($key)

这将删除指定元数据 $key 的值。旧的 $val 将被返回。

$obj->set_meta($key, $val)

设置指定元数据 $key 的值。

META-KEY 限制

元数据键必须定义,并且在用作布尔值时必须为真。键不能是引用。您可以自由地将引用 "$ref" 字符串化以用作键,但此包不会为您字符串化它。

来源

Test2 的源代码仓库可以在 http://github.com/Test-More/test-more/ 找到。

维护者

Chad Granum <[email protected]>

作者

Chad Granum <[email protected]>

版权

版权所有 2020 Chad Granum <[email protected]>。

本程序是自由软件;您可以根据与 Perl 本身相同的条款重新发布和/或修改它。

参见 https://dev.perl5.cn/licenses/