2009-11-25 4 views

Répondre

10

Faites-vous référence à autobox? Voir aussi Should I use autobox in Perl?.

+0

c'est un module que j'ai remarqué. un autre pourrait être 'scalar :: object'. J'ai vu que 'autoload' utilise XS, et j'ai remarqué que' scalar :: object' ne le fait pas. Je préfère être plus intéressé par la façon dont 'scalar :: object' est ce que c'est. Je suis curieux de savoir si cela peut se faire sans avoir recours à une programmation de niveau inférieur. – Geo

+3

'scalar :: object' utilise la fonction' overload :: constant' et une autre magie 'overload', mais elle n'a pas non plus le pouvoir de' autobox'. 'autobox' fonctionne en s'accrochant à l'implémentation de l'opérateur d'appel de méthode' -> foo() 'lui-même. – hobbs

+0

autobox est certainement la voie à suivre pour ce genre de fonctionnalité. – tsee

1

Cet exemple utilise la fonction Autobox.

#!/usr/bin/perl 

use strict; 
use warnings; 

package MyInt; 

sub is_odd { 
    my $int = shift; 
    return ($int%2); 
} 

package main; 

use autobox INTEGER => 'MyInt'; 
print "42: ".42->is_odd."\n"; 
print "43: ".43->is_odd."\n"; 
print "44: ".44->is_odd."\n"; 
Questions connexes