Re: GdkRectangle, again
- From: Chas Owens <alas wilma widomaker com>
- To: Ross McFarland <rwmcfa1 neces com>
- Cc: gtk-perl-list gnome org
- Subject: Re: GdkRectangle, again
- Date: Tue, 29 Apr 2003 10:48:26 -0400 (EDT)
On Tue, 29 Apr 2003, Ross McFarland wrote:
it's nice to be able to set the members without having to call a function.you
would like to be able to $update_rect->{x} = 5; granted it's just as easy to
say $update_rect->x(5); but that's not what you'd first assume would be the
case. these are c structures that in a c app you directly manipulate. when in
perl that equates to a hash. and that would probably be people's first
assumption to what a GtkRectangle would/should be.
there's nothing keeping you from making it functions that operate on a hash so
that you could choose which way. use it as hash ($rect->{x}) or as a function
($rect->x)
Given that this is Perl lets make everyone happy.  The following prints
0
5
10
15
20
20
20
<code>
#!/usr/bin/perl
use strict;
my $o = object->new(x => 0);
print $o->x, "\n";
$o->x = 5;
print $o->x, "\n";
$o->{x} = 10;
print $o->x, "\n";
$o->set('x', 15);
print $o->x, "\n";
$o->x(20);
print $o->x, "\n";
print $o->{x}, "\n";
print $o->get('x'), "\n";
package object;
sub new {
        my $class = shift;
        my $self = {
                x => undef,
                y => undef,
                w => undef,
                h => undef,
                @_
        };
        return bless $self, $class;
}
sub set {
        my ($self, $property, $value) = @_;
        $self->{$property} = $value;
}
sub get : lvalue {
        my ($self, $property) = @_;
        $self->{$property};
}
BEGIN {
        for my $property ('x', 'y', 'w', 'h') {
                eval "*$property = sub : lvalue{
                        my \$self = shift;
                        \$self->get('$property') = \$_[0] if exists \$_[0];
                        \$self->get('$property');
                        }";
        }
}
</code>
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]