Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: A pair of "mathematical" attributes for arrays?

by tsee (Curate)
on Sep 11, 2007 at 09:48 UTC ( #638267=note: print w/ replies, xml ) Need Help??


in reply to A pair of "mathematical" attributes for arrays?

I'm not suggesting that you actually use this, but the following is a simple implementation of the :zero (here :ZeroDefault) attribute. It's intended to show you that what you would like to have is quite easy to implement in pure Perl without changing the interpreter at all or writing a single line of XS/C. All the usual attribute-gotchas apply. All the usual tie() gotchas apply, too. (Slowness, for example.)

#!/usr/bin/perl use 5.006; use strict; use warnings; package Attribute::Array::Zeroes; use Tie::Array; use base 'Tie::StdArray'; use Attribute::Handlers autotie => { '__CALLER__::ZeroDefault' => 'Attribute::Array::Zeroes' }; sub FETCH { my $return = $_[0]->[$_[1]]; return 0 if not defined $return; $return; } package main; #use Attribute::Array::Zeroes; my @x : ZeroDefault; print "This is zero, not undef: $x[4]\n"; $x[5] = 1; print "This, too: $x[0] and even this: $x[6]. This isn't: $x[5]\n";

Of course, this is just a hack and I haven't tested it thoroughly.

Cheers,
Steffen


Comment on Re: A pair of "mathematical" attributes for arrays?
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://638267]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (10)
As of 2014-09-01 08:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (299 votes), past polls