[SP-pm] Dúvida entre Scalar Context e List Context
Nelson Ferraz
nferraz at gmail.com
Mon Mar 22 03:04:57 PDT 2010
2010/3/22 Solli Honorio <shonorio em gmail.com>:
> Sempre é um prazer ajudar, mas para isto é importante ficar claro qual a tua
> dúvida ? Em que situação você fica confuso com algum conceito ? E tente
> explicar o que você entendeu para que possamos saber qual o nível de
> informação você procura !
Como diz o Eric S. Raymond, no mundo dos hackers, o tipo de respostas
que você obtém para suas questões técnicas depende bastante da forma
que você faz as perguntas.
Quanto ao conceito de contexto, é bem simples.
my @list = (1..10);
sub get_list {
if (wantarray) {
return @list;
} else {
my $item = shift @list;
return $item;
}
}
No exemplo acima existem duas maneiras de se chamar get_list():
Contexto escalar:
my $a = get_list(); # => 1
my $b = get_list(); # => 2
my $c = get_list(); # => 3
Contexto de lista:
my @x = get_list(); # => (1..10)
Ou seja: o contexto é a forma como você chamou a subrotina -- você
está atribuindo o resultado para um escalar ou para uma lista?
Você frequentemente vai encontrar o wantarray dentro de um operador
ternário ("?"):
my @list = (1..10);
sub get_list {
return wantarray ? @list : shift @list;
}
Sugestão de leitura:
http://www.perl.org.br/Artigos/SmartQuestionsHowTo
More information about the SaoPaulo-pm
mailing list