我对perl有一个想法,我试图找出实现它的最佳方法。perl - 通用运算符过载
这个想法是让每个操作符的新版本将未定义的值视为该操作的标识。例如:
$a = undef + 5; # undef treated as 0, so $a = 5
$a = undef . "foo"; # undef treated as '', so $a = foo
$a = undef && 1; # undef treated as false, $a = true
等等。
理想情况下,这将在语言中作为编译指示或其他。
use operators::awesome;
不过,我会满意,如果我能实现这个特殊的逻辑我自己,然后调用它需要的地方:
use My::Operators;
的问题是,如果我说“超负荷使用”我的里面: :操作符只会影响到My :: Operators中保存的对象。
所以问题是:有没有一种方法(用“使用overoad”或其他方式)做一个“通用运算符超负荷” - 这将被称为所有操作,而不仅仅是有福的标量操作。
如果不是 - 谁认为这将是一个好主意!这将节省我这种代码的TON
if($object && $object{value} && $object{value} == 15)
replace with
if($object{value} == 15) ## the special "is-equal-to" operator
此编译指示已存在。它被称为“没有警告”; – mob
我假设你打算说'$ object - > {value}'而不是'$ object {value}'。 – cjm