帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:method  decorators  dec  Decorator  
Python's method decorators for Ruby

  • 源代码名称:method_decorators
  • 源代码网址:http://www.github.com/michaelfairley/method_decorators
  • method_decorators源代码文档
  • method_decorators源代码下载
  • Git URL:
    git://www.github.com/michaelfairley/method_decorators.git
  • Git Clone代码到本地:
    git clone http://www.github.com/michaelfairley/method_decorators
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/michaelfairley/method_decorators
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • MethodDecorators

    python 装饰器用于 ruby的功能。

    我可能不会在生产中使用这个。

    安装

    gem install method_decorators

    用法

    使用装饰器

    在要使用它们的类中扩展 MethodDecorators,然后在方法声明之前粘贴 +DecoratorName 以修饰方法。

    require"method_decorators/memoize"classMyMathextendMethodDecorators+MethodDecorators::Memoizedefself.fib(n)
     if n <=1 n
     else fib(n -1) + fib(n -2)
     endendendputsMyMath.fib(200)

    你还可以使用修饰器的实例来装饰,而不是使用类。 这对于配置装饰器的特定选项非常有用。

    classExternalServiceextendMethodDecorators+MethodDecorators::Retry.new(3)
     defrequest. . .
     endend

    你还可以为你的方法设置多个装饰器。 每个decorator在先前声明的decorator中执行。 它们是嵌套的,就像预期的那样。

    classExternalServiceextendMethodDecorators+MethodDecorators::Retry.new(3)
     +MethodDecorators::Within.new(2.seconds)
     defrequest. . .
     endend

    包含装饰器

    包含这些内容 require 'method_decorators/name_of_decorator' ,或者同时使用 require'method_decorators/all'

    • Memoize - 缓存每个 arg 组合所调用的方法的结果
    • 重试- 如果方法错误,则重试最多(。传递到构造函数) 次的方法
    • 如果请求在n 秒内没有完成,则内部超时
    • 前提条件( 作为块传递) 不满足时,先产生一个误差

    定义修饰器

    classTransactional <MethodDecorators::Decoratordefcall(wrapped, this, *args, &blk)
     ActiveRecord::Base.transaction do wrapped.call(*args, &blk)
     endendend

    许可证

    MethodDecorators在MIT许可下可用,可以供所有用户使用,包括个人。商业和学术。 详细信息请参阅许可证。



    文章标签:dec  method  Decorator  decorators  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语