perl moose 修饰器

原理上就是在调用某个方法之前,先做一些事情,比如检查参数什么的,在Dancer中也有这个关键字,可以在request到来的时候,通过检查

远程ip来判断是否是非法的ip请求

#!/usr/bin/perl
# file : before.pl
# date : 2014/08/26
# author : darkstar

#使用moose 定义一个类

package Person;
use Moose;

has ‘name‘ => (
    is => ‘ro‘,
    isa => ‘Str‘,
    required => 1,
);

has ‘age‘ => (
    is => ‘rw‘,
    isa => ‘Int‘,
    required => 1,
);

# 喝酒前检查年龄是否18 ,年龄检查的逻辑可以放在 drink_Brandy 里也行,这里是为了

# 体现before的功能

before ‘drink_Brandy‘ => sub {
    my $self = shift;
    if ($self->age > 18 ) {
        print "you can drink Brandy!\n"
    }
    else {
        print "get out boy!\n";
        exit;
    }
};

sub drink_Brandy {
    print "Good!\n";
};

1;

use Person;
# 生成一个person对象,16岁
my $p1 = Person->new(name =>‘dark‘, age => 16);

print $p1->name, "\n";
print $p1->age, "\n";

$p1->drink_Brandy;   #直接喝酒,before 替我们把关年龄,不满18就中断程序

# 程序输出如下:

dark
16
get out boy!  # 小孩子 回家去!

时间: 2024-08-25 00:48:13

perl moose 修饰器的相关文章

python 修饰器

因困扰自己多时,打算整理一下修饰器到底是什么? 参考资料:http://python.jobbole.com/82344/ 修饰器 1. 定义2个函数 2. 基本实现 3. 问题:实现后, 要修改原来代码中的变量名, funcB()改为funcA(funcB) 4. 解决方法:让funcB赋值等于funcA(funcB),用时就是funcB(), 不用修改原来代码, 这个要求需funcA(funcB)返回的是一个函数     a) 所以要返回一个函数,则加一个函数 wrapper(),然后ret

PYTHON修饰器的函数式编程

转自:http://coolshell.cn/articles/11265.html Python修饰器的函数式编程 Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似--都是想要对一个已有的模块做一些"修饰工作",所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能

Python的wraps修饰器详解

本文和大家分享的主要是python 中wraps 修饰器相关内容,一起来看看吧,希望对大家 学习python有所帮助. 在了解  wraps  修饰器之前,我们首先要了解  partial  和  update_wrapper  这两个函数,因为在 wraps  的代码中,用到了这两个函数. partial 首先说  partial  函数,在  官方文档  的描述中,这个函数的声明如下:  functools.partial(func, *args, **keywords)  .它的作用就是返

ES2017中的修饰器Decorator

前面的话 修饰器(Decorator)是一个函数,用来修改类的行为.本文将详细介绍ES2017中的修饰器Decorator 概述 ES2017 引入了这项功能,目前 Babel 转码器已经支持Decorator 首先,安装babel-core和babel-plugin-transform-decorators.由于后者包括在babel-preset-stage-0之中,所以改为安装babel-preset-stage-0亦可 $ npm install babel-core babel-plug

Python 从零学起(纯基础) 笔记 之 迭代器、生成器和修饰器

Python的迭代器. 生成器和修饰器 1. 迭代器是访问集合元素的一种方式,从第一个到最后,只许前进不许后退. 优点:不要求事先准备好整个迭代过程中的所有元素,仅仅在迭代到某个元素时才计算该元素,而在这之前或者之后,元素可以不存在或被销毁. 特点: 访问者是不需要关心迭代器内部的结构,仅需要通过next()方法不断去取下一个内容. 不能随机访问集合中的某个值,只能从头到尾依次访问. 访问到一半时不能往回退 便于循环比较大的数据集合,节省内存 1 names = iter(['alex','ja

修饰器学习

第一步:(简单的函数调用) def myfunc() print('myfunc() called.") myfunc() 第二步:(修饰器本质的调用原理,修饰器内调用被修饰的函数) def deco(func):    print('before myfunc() called.')    func()    print('after myfunc() called') def myfunc():    print('myfunc() called') myfunc=deco(myfunc)#

Python的修饰器@

修饰器是一个很著名的时机模式,经常用于有切面需求的场景,如插入日志.性能测试.事务处理等.修饰器能够很好地解决这些问题,有了修饰器我们能抽离出大量函数中与函数功能本身无关的雷同代码并继续使用.也就是说,修饰器的作用就是为已经存在的函数对象添加额外的功能. 1.修饰器入门: 1.1.需求的由来: 修饰器的定义很抽象,先来看一个例子: def foo():     print "in foo()"      foo() 这个函数的功能是打印出一窜字符窜.如果想要测试执行这个函数用了多长时间

(17)方法和修饰器

* 方法和修饰器    api是命名修饰器,识别 cr,cursor, uid, user, user_id, id, ids, context        # @api.returns      返回指定模型的记录集        @api.returns('res.partner')        def afun(self):            ...            return x  # a RecordSet                    这样就返回合作伙伴记录集

ES6学习笔记九:修饰器

一:修饰器(Decorator)是一个函数,用来修改类的行为. 1)定义与使用 function 修饰器名(target) { //target是被修饰对象,可用target.xxx进行调用修改 } @修饰器名 class MyClass { // ... } //调用修饰器 MyClass.修饰器; 修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时.这意味着,修饰器能在编译阶段运行代码. 2)带参数的修饰器 function 修饰器名(参数列表) { return function(