目的·概要
负责进行方法的委托(delegation)。
Delegator类会委托指定的对象执行某方法. 在使用Delegator类时, 要先继承它,然后对__getobj__方法进行再定义, 以便指定接受委托的对象.
SimpleDelegator是Delegator的一个实用例子, 它委托构造函数所接收到的对象来执行某方法.
DelegateClass(supperclass)函数负责定义并返回一个委托类, 该类会委托superclass类的某个对象来执行实例方法.
类
Delegator
SimpleDelegator
范例代码
require 'delegate'
foo = Object::new
def foo.test
p 25
end
foo2 = SimpleDelegator::new(foo)
foo2.test # => 25
class ExtArray<DelegateClass(Array)
def initialize()
super([])
end
end
a = ExtArray::new
p a.type # => ExtArray
a.push 25
p a # => [25]
Delegator
该类为给出的对象提供委托用的方法定义。
在构造函数内部那些被指定对象的实例方法中,定义委托方法, 使得那些不属于自己的方法可以向返回__getobj__的对象进行委托操作.
实例方法
Delegator#initialize(obj)
定义实例方法,使得obj中不属于自己的实例方法可以向返回__getobj__的对象进行委托操作.
Delegator#__getobj__
返回接受委托的对象. 默认情况下, 它会引发NotImplementError, 所以必须在子类中进行再定义.
SimpleDelegator
该类利用Delegator类, 委托指定对象执行某方法.
上级类
Delegator
类方法
SimpleDelegator.new(obj)
生成一个对象, 它委托obj来执行自身所拥有的方法。
实例方法
SimpleDelegator#__getobj__
返回接受委托的对象。
SimpleDelegator#__setobj__(obj)
将接受委托的对象变为obj。
请注意, 因为只有在生成时才会进行委托方法的定义, 所以即使接受委托的对象和obj之间存在实例方法上的差异, 也无法再次设定委托实例方法.
函数
DelegateClass(superclass)
定义并返回一个委托类, 它委托superclass类的实例来执行某方法.
SEE ALSO
Object#method_missing(method_symbol, ...)
若对象中尚未定义某方法时, 就会调用该方法. 使用该方法, 您可以将自己不知道的方法委托给其他的对象.
例:
def hoge.method_missing(message, *arg)
@to_obj.send(message, *arg)
end
分享到:
相关推荐
Delegation委托写法项目实例,自定义方法调用,在项目中将方法作为参数传递。
Troubleshooting_Kerberos_Delegation
NFSv4-delegation-Noveck-color.pdf
剖析Java Event-Delegation Model,讲得很好,有深度!!
my-delegation-poker-源码.rar
COM Delegation Using the COM Channel Hook Mechanism使用CCHM机制的COM对象
presentation to Shanghai Delegation on Shipping Centre伦敦金融城、波罗的海交易所以及全球航运市场-报告资料.pdf
JavaScript_面試_事件傳遞機制和事件委託_Event_Propagation_&_Event_Delegation_-
php设计模式 Delegation 委托模式示例代码,需要的朋友可以参考下。
Spark streaming应用运行7天之后,自动退出,日志显示token for xxx(用户名): HDFS_DELEGATION_TOKEN owner=xxxx@xxxx.com, renewer=yarn, realUser=, issueDate=1581323654722, maxDate=1581928454722, sequence...
Protecting Data Privacy in Publicly Verifiable Delegation of Matrix and Polynomial Functions
事件委托 浏览器DOM事件的事件委托。 灵活,跨浏览器兼容且以Typescript为重点。 快速链接 安装 CDN ...import EventDelegation from '@jjwesterkamp/event-delegation' EventDelegation命名空间对象
官方版本,亲测可用
JAVA_deletetree_delegation 第1部分:类AbsTree中的定义删除第3课介绍了一个称为二类AbsTree的二进制搜索树的面向对象的定义,其中有两个子类Tree和DupTree。 在分配的这一部分中,您将以在类AbsTree中完成删除...
官方版本,亲测可用
能力委托将使用受限API的功能转移到框架树中的另一个window 。介绍什么是能力委派? JS中以受限方式可以使用Web中的许多功能。 例如: 大多数浏览器仅在用户最近与页面进行交互或允许浏览器从页面来源打开弹出窗口时...
var events = require ( 'dom-delegation-stream' ) var values = require ( 'dom-value-stream' ) events ( document . body , 'input' , 'input[type=text]' ) . pipe ( values ( ) ) . pipe ( wherever ( ) ) ...
地形-dns-区域授权 用于委托DNS区域(特别是DNS区域)的Terraform模块
代表团 在 C++11 中编译时通过模板没有虚函数调用的委托
d3委托d3中事件委托的实现正在安装npm i --save d3-delegation或yarn add d3-delagation方法委托事件() 参数描述类型默认parentSelector 父svg元素或包含用于匹配父svg元素的选择器表达式的字符串元素或字符串不...