perl – 为什么Moose的构建器采用字符串值?
Moose::Manual::Attributes州:
因此,您的属性可以定义默认值: has attr => ( is => 'ro',builder => 'subroutine' ); sub subroutine { # figure out and return default value } 我不明白为什么这必须与默认分开.难道你不能只是传递对命名子程序的引用吗? has attr => ( is => 'ro',default => &;subroutine ); 那不是更好的编程实践,因为你保证不会意外地引用一个不存在的子程序吗?您将使用逻辑引用而不是符号引用来引用该方法. 解决方法
调用构建器时,会发生以下情况:
$object->$builder 如果builder是一个字符串(比如build_attr),那么用户可以在子类中编写自己的build_attr方法,然后调用它.这使得默认值可通过简单的命名方法机制进行扩展. 如果它是对子例程的引用,则引用将在原始类的包中进行,这意味着它不能以相同的方式覆盖. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |