[bcn-pm] En un objecte, fer servir el varlor d'un atribut per crear dinàmicament els altres atributs
mimosinnet
mimosinnet a gmail.com
dim gen 15 09:35:14 PST 2013
El dissabte, 12 de gener del 2013 a les 13:05, Miquel Ruiz va escriure:
> Sí que es pot, gràcies a Moose::Meta::Class. Un exemple molt tonto:
Mil gràcies! He provat l'exemple i funciona. M'ha servit per veure les
meravelles que es poden fer amb Moose i les perillositats que comporten.
A partir del codi que vas enviar, el que ve a continuació dona els atributs del
la classe Sys obtinguts dinàmicament a partir dels continguts del
directory Sys; i amb poques línies de codi! Qué bonic és Perl quan
arribes a entendre'l!
---
#!/usr/bin/perl
use 5.010; use strict; use warnings; use Moose;
# Get a list of files from /sys
my @files = split /\s+/, `ls /sys`;
# Class generation
my $meta = Moose::Meta::Class->create('Sys');
# One attribute per subdirectory in /sys
$meta->add_attribute($_ => (is => 'ro')) for @files;
# populate each attribute with an arrayref with the contents of the dir
my @args = map { $_ => [ split /\s+/, `ls /sys/$_` ] } @files;
my $sys = $meta->new_object(@args);
my $meta1 = Class::MOP::Class->initialize("Sys");
for my $attr ( $meta1->get_all_attributes ) {
my $an = $attr->name;
say "Atribute Name = $an";
}
--
Mimosinnet
Linux User: #463211
41:24:51N (41.4141) 2:11:24E (2.1902)
Ningún Lugar
Activisme Cultural per a la Transformació Social
http://generatech.org/ningunlugar
Fractalitats en Investigació Crítica
Investigació Crítica per a la Transformació Social
http://psicologiasocial.uab.es/fic
-------------- part següent --------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 198 bytes
Desc: no disponible
URL: <http://mail.pm.org/pipermail/barcelona-pm/attachments/20130115/43257068/attachment.bin>
Més informació sobre la llista de correu Barcelona-pm