perl6 – 如何编写惰性访问器
发布时间:2020-12-15 22:05:18 所属栏目:大数据 来源:网络整理
导读:懒惰地构建属性的最佳方法是什么? class I { has $!cheezeburger; method cheezeburger { given $!cheezeburger { when .so {return $_} default { # build $cheezeburger,set attribute to it,return } } }} 这是很多cheezeburger.什么可能是一个不那么冗
懒惰地构建属性的最佳方法是什么?
class I { has $!cheezeburger; method cheezeburger { given $!cheezeburger { when .so {return $_} default { # build $cheezeburger,set attribute to it,return } } } } 这是很多cheezeburger.什么可能是一个不那么冗长的方式? 解决方法
如果未定义属性,Brad给出的实用解决方案应该足够好用于许多情况:
class Foo { has $!cheezeburger; method cheezeburger { $!cheezeburger //= do { ... } } } 另一种方法是使用do来通过在第一次调用期间混合角色来替换访问器方法,使用黑魔法(也称为NQP操作)来访问私有属性: class Foo { has $!cheezeburger; method cheezeburger { self does role { method cheezeburger { use nqp; nqp::getattr(self,Foo,'$!cheezeburger'); } } $!cheezeburger = do { ... } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |