with useradd home create adduser perl loops syntax for-loop foreach

useradd - ¿Cuál es la diferencia entre ''para'' y ''foreach'' en Perl?



adduser y useradd linux (8)

La palabra clave foreach es en realidad un sinónimo de la palabra clave for, por lo que puede usar foreach para facilitar la lectura o para abreviar. (O porque el shell Bourne es más familiar para usted que csh, por lo que escribir es más natural). Si se omite VAR, $ _ se configura para cada valor.

Veo que estos se usan indistintamente. ¿Cual es la diferencia?


Veo que estos se usan indistintamente.

No hay diferencia más que la de sintaxis.


Cuatro letras.

Son funcionalmente idénticos, simplemente deletreado de manera diferente.


De http://perldoc.perl.org/perlsyn.html#Foreach-Loops

La palabra clave foreach es en realidad un sinónimo de la palabra clave for, por lo que puede usar cualquiera. Si se omite VAR, $ _ se establece en cada valor.

# Perl''s C-style for (;;) { # do something } for my $j (@array) { print $j; } foreach my $j (@array) { print $j; }

Sin embargo:

Si alguna parte de LIST es una matriz, foreach se confundirá si agrega o elimina elementos dentro del cuerpo del bucle, por ejemplo, con empalme. Entonces no hagas eso.


Desde su introducción en perl-2.0 , foreach ha sido sinónimo de for . Es un guiño al comando foreach del caparazón C

En mi propio código, en el raro caso de que esté usando un C-style for-loop, escribo

for (my $i = 0; $i < $n; ++$i)

pero para iterar sobre una matriz, deletreo

foreach my $x (@a)

Encuentro que se lee mejor en mi cabeza de esa manera.


En caso de "para" puede usar los tres pasos.

1) Inicialización 2) Revisión de la condición 3) Incremento o disminución

Pero en el caso de "foreach" no puede aumentar o disminuir el valor. Siempre toma el valor de incremento como 1.


Hay una diferencia sutil ( http://perldoc.perl.org/perlsyn.html#Foreach-Loops ):

El ciclo foreach itera sobre un valor de lista normal y establece la variable VAR para que sea cada elemento de la lista. Si la variable está precedida por la palabra clave my, tiene un alcance léxico y, por lo tanto, es visible solo dentro del ciclo. De lo contrario, la variable es implícitamente local para el ciclo y recupera su valor anterior al salir del ciclo. Si la variable fue declarada previamente con my, usa esa variable en lugar de la global, pero aún está localizada en el ciclo. Esta localización implícita ocurre solo en un ciclo foreach.

Este programa :

#!/usr/bin/perl -w use strict; my $var = 1; for ($var=10;$var<=10;$var++) { print $var."/n"; # print 10 foo(); # print 10 } print $var."/n"; # print 11 foreach $var(100) { print $var."/n"; # print 100 foo(); # print 11 ! } sub foo { print $var."/n"; }

producirá eso:

10 10 11 100 11


No hay diferencia. De perldoc perlsyn :

La palabra clave foreach es en realidad un sinónimo de la palabra clave for , por lo que puede usar foreach para foreach lectura o para abreviar.