Есть ли способ подавить определенные предупреждения в вызывающем абоненте для перегруженного оператора?Запретить предупреждение контекста void для перегруженного оператора
фона: Я смотрю на модуль, который перегружает <=
и >=
осуществить своего рода декларативный домена конкретного alnguage. Независимо от того, является ли это хорошей идеей, эти операторы бросают предупреждения «бесполезное использование в пустотном контексте» при использовании в пустотном контексте. Что-то вроде:
package Boundary;
use strict;
use overload ('<=' => \&set_min, '>=' => \&set_max);
sub new { my ($class, $min, $max) = @_; bless [ $min, $max ], $class; }
sub set_min { my $self = shift; $self->[0] = shift; }
sub set_max { my $self = shift; $self->[1] = shift; }
package main;
# user code
use warnings;
my $bound = Boundary->new();
$bound >= 1; # Useless use of numeric ge (>=) in void context at ...
$bound <= 10; # Useless use of numeric le (>=) in void context at ...
Есть ли способ подавления предупреждений только для перегруженных вызовов, без вызывающего явного предупреждения отключить Пустоту?
+1 Спасибо, хорошая иллюстрация. Я не думаю, что это dangero - AAAUUGH IT BURNS !!! – pilcrow
@pilcrow, Нет, вы правы, что вряд ли его скоро изменят. То, что вы столкнетесь с такими проблемами, потому что ваша модель и модель носителей не синхронизированы. – ikegami