perl6 – 如何编写惰性访问器

前端之家收集整理的这篇文章主要介绍了perl6 – 如何编写惰性访问器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
懒惰地构建属性的最佳方法是什么?
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 { ... }
    }
}
原文链接:https://www.f2er.com/Perl/171364.html

猜你在找的Perl相关文章