- UID
- 1
- 威望
- 1240 点
- 金钱
- 24019 金币
- 点卡
- 317 点
|
1#
发表于 2005-8-24 12:35
| 只看该作者
一段精巧的闭包代码
来源:www.leohacks.com
一段精巧的闭包代码。偶从PerlChina看到的。关于权限组的,估计对16你有很大的启发:)
偶正在研究中:)
代码来自于 MT blog 程序的 MT:ermission.pm 包- {
- my @Perms = (
- #### 定义权限,这是一个复合数组
- [ 1, ';admin';, ';Administrator';, ],
- [ 2, ';post';, ';Post';, ],
- [ 4, ';upload';, ';Upload File';, ],
- [ 8, ';edit_all_posts';, ';Edit All Posts';, ],
- [ 16, ';edit_templates';, ';Edit Templates';, ],
- [ 32, ';edit_authors';, ';Edit Authors & Permissions';, ],
- [ 64, ';edit_config';, ';Configure Weblog';, ],
- [ 128, ';rebuild';, ';Rebuild Files';, ],
- [ 256, ';send_notifications';, ';Send Notifications';, ],
- [ 512, ';edit_categories';, ';Edit Categories';, ],
- [ 1024, ';edit_notifications';, ';Edit Address Book'; ],
- [ 2048, ';edit_blog_config';, ';Configure Weblog Preferences'; ],
- );
- sub set_full_permissions {
- ### 这是设置全权限,其实权限只是数字码,把上面数组中的数字全加,就是全权限了
- my $perms = shift;
- my $mask = 0;
- for my $ref (@Perms) {
- $mask += $ref->[0];
- }
- $perms->role_mask($mask);
- }
- sub set_permissions {
- #### 这个函数是我加的,呵呵,上面有两个权限也是我加的。
- my $perms = shift;
- my $mask = 2014;
- $perms->role_mask($mask);
- }
- sub perms { \@Perms }
- #### 这是返回数组引用
- ####################################### 闭包从最前面的 { 花括号开始的域中,到结束的 } 中
- ####################################### 这里是闭包的处理,自动生成函数
- no strict ';refs';;
- ####### 允许使用符号表
- for my $ref (@Perms) {
- ####### 对数组中的每一个,生成一个函数
- my $mask = $ref->[0];
- my $meth = ';can_'; . $ref->[1];
- # 这是函数名定义,如 admin 权限是 1, 这个函数就是 can_admin()
- *$meth = sub {
- # 这是符号表的匿名函数
- my $flags = $_[0]->role_mask || 0;
- #if (@_ == 2) {
- # $flags = $_[1] ? ($flags | $mask) :
- # ($flags & ~$mask);
- # $_[0]->role_mask($flags);
- #}
- $flags & $mask;
- };
- }
- }
- sub can_edit_entry {
- my $perms = shift;
- my($entry, $author) = @_;
- $perms->can_edit_all_posts || ($perms->can_post && $entry->author_id == $author->id);
- }
- 1;
复制代码 |
我是一个呼吸着现在的空气而生活在过去的人
这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
我已习惯了孤独,爱上孤独
他让我看清了自我,还原了自我
让我再静静的沉思中得到快乐和满足
再孤独的世界里我一遍又一遍
不厌其烦的改写着自己的过去
延伸到现在与未来
然而那只是泡沫般的美梦
产生的时刻又伴随着破灭的到来
在灰飞烟灭的瞬间我看到的是过程的美丽
而不是结果的悲哀。。。
|
|