- 论坛徽章:
- 0
|
Intermediate Perl里面有详细介绍,cu里有翻译的1-12章
12.6.让一个方法在类和实例都可以使用
解决这个问题, 我们所要做的就是查这个方法的调用者是个类还是实例。最直
接的方法是用ref 操作符。这个操作符在用在一个blessed引用上会返回一个
字串(类名), 而用在一个字串(如类名)时返回的是空值。我们改下看看:- subname{
- my$either=shift;
- ref$either
- ?$either #it'saninstance,returnname
- :"anunnamed$either"; #it'saclass,returngeneric
- }
复制代码 这里?: 操作符选择是否是还原或是类字串。现在不管是实例或者是类我们
都可以使用他们。注意, 我们把第一个参数位改成$either来显示这是有意的:- printHorse->name,"\n"; #prints"anunnamedHorse\n"
- my$tv_horse=Horse->named('Mr.Ed');
- print$tv_horse->name,"\n"; #prints"Mr.Ed.\n"
复制代码 我们将使用这个设置叫声:- subspeak{
- my$either=shift;
- print$either->name,'goes',$either->sound,"\n";
- }
复制代码 因此sound 方法既可以在类上也可以在实例上运行, 完成了! |
|