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

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 { ... }
    }
}

(编辑:李大同)

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

    推荐文章
      热点阅读