Pregunta

Actualmente estoy estudiando la programación de Perl y me estoy encontrando con declaraciones como esta:

return bless { }, $type;

yo se que return bless { }; lo haría, y también sé qué return $type; lo haría, pero ¿cómo los separa por una coma afecta la declaración, y funciona de la misma manera para todos los operadores unaros?

¿Fue útil?

Solución

bendecir no es un operador unario, entonces lo que sucede es que $type se pasa a bless (donde se usa como el nombre de la clase para bendecir el hashref en).

Lo único especial de lo especial devolver es que la expresión en su mano derecha podría evaluarse en la lista, el contexto escalar o nulo dependiendo del contexto en el que se llamaba la subrutina.

los operador de comas no se interpreta de manera diferente en un return declaración de lo que sería en cualquier otro lugar (excepto que no puede saber si está en la lista o en el contexto escalar al observar el return declaración).

Otros consejos

Las funciones de Perl predefinidas se pueden llamar con o sin paréntesis. La mayoría de las personas que provienen de otros idiomas confunden estas funciones para palabras clave/operadores.

Bendecir, undef, empujar, pop, desplazarse, desanimar, imprimir, dividir, unirse, etc. son todas las funciones.

Por lo tanto, estos dos son equivalentes:

 return bless { }, $type;
 return bless({ }, $type);

Pero estos dos no son:

 print 2 * 3 + 2; # prints 8
 print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top