以类似于重载运算符的方式,有没有办法将某种魔法应用于变量,以便以下内容:
my $magic_var = ...;
some_function($magic_var);
将导致类似这样的事情:
call_function(\&some_function, $magic_var)
如果未定义some_function
,我可以使用AUTOLOAD
子来捕获呼叫,但是当它被定义时,我不知道拦截呼叫的方法(没有疯狂的事情)比如在所有调用者的潜艇周围注入包装器,或者暂时取消定义所有潜水员。
另一种表达方式是我想写use overload sin => \&my_sin;
但sin
是任何函数,并且只要在a中使用重载对象就让它调用nomethod
。功能调用。
编辑:
根据大众的要求,我之所以这样做是因为我正在研究Perl6的Perl5版本,无论是哪个星星。但是,在更多地研究Perl6实现之后,它似乎也没有处理Whatever
上调用的函数,所以看起来我不必尝试处理函数调用(只是运算符和方法)呼叫)。
如果有人有兴趣,该模块可以使用CPAN:Whatever。
欢迎提出意见/评论。