ActivePerl Tipos de variables y Fundamentos contexto de ActivePerl - Parte 11 Introducción Esto es parte de mi serie 11, Fundamentos de ActivePerl. En esta parte de la serie, nos fijamos en lo que se llama los tipos de datos ActivePerl y lo que también se llama el contexto escalar y el contexto lista. Nota: Si no puede ver el código o si cree que falta algo (enlace roto, la imagen ausente), simplemente en contacto conmigo en [email protected]. Es decir, en contacto conmigo para el más mínimo problema que tenga acerca de lo que está leyendo.
Los tipos de datos Perl tiene tres tipos de datos incorporados, que se llaman los escalares, arrays y hashes. Significado de un Scalar En términos simples, un escalar es una cadena o un número. Cualquier variable que identifica un escalar comienza con $. Un escalar es lo que hemos estado refiriendo como un valor simple. Ejemplo, mi $ var; $ var = "algún texto o un número sin comillas"; Hemos visto muchos ejemplos de escalar. Significado de una matriz Una matriz es una lista ordenada de escalares. Hemos visto ejemplos de esto. Cualquier variable que identifica una serie debe comenzar con @.
Significado de Hash Un hash es una lista no ordenada de escalares. Una diferencia principal entre un hash y una serie es que los valores del hash son indexados por claves de cadena asociados, mientras que los valores de un array son indexados por los números. Cualquier variable que identifica un hash comienza con%. Hemos visto ejemplos de hashes. Variable válido Nombre De lo anterior, vemos que una variable comienza con cualquiera, $, @ o%. Después de que usted debe tener una letra o un guión.
Después de eso, usted puede tener cualquier número de guiones bajos, letras o números en cualquier orden, para formar el nombre de la variable. Enumere Una lista es un conjunto de escalares separadas por comas, delimitadas por paréntesis. Un ejemplo es: ("el primero", "segundo", 3) Hay tres escalares allí: dos cuerdas y un número. Puede tener listas en ambos lados del operador de asignación.
Considere la siguiente línea: (mi $ uno, mi $ dos, mi $ tres) = ("el primero", "segundo", 3); Hay dos listas aquí: uno a la izquierda del operador de asignación y el otro a la derecha del operador de asignación. Me intencionadamente ambas listas para tener tres escalares cada uno. La lista de la derecha tiene escalares reales. El de la izquierda tiene pero variables. Cada una de las variables para la lista de la izquierda, llevará a cabo el escalar correspondiente de la lista de la derecha. Espero que usted está apreciando el significado de la lista en ActivePerl.
Lea y probar el siguiente código: use strict; print "Content-Type: text /html \\ n \\ n"; (mi $ uno, mi $ dos, mi $ tres) = ("el primero", "segundo", 3); print $ ona; "print $ dos; print" print print $ tres; print "Usted debe tener los tres valores escalares muestran una lista se puede asignar a otra lista con las variables correspondientes como se muestra arriba Sin embargo, la lista también puede ser asignado a un array como se muestra en el siguiente código (leer y probarlo)..
: use strict; imprimir "Content-Type: text /html \\ n \\ n"; miarr = ("el primero", "segundo", 3);arr de impresión; Se prefiere este método de asignación de una lista, cuando usted no sabe el número de elementos en la lista, o cuando la lista es muy larga argumentos a una función que hemos visto la función de impresión En el primer ejemplo de código anterior, hemos imprimir $ ona;.. También puede ser de impresión " ($ uno); "pero los soportes suelen ser omitidos En uno de los capítulos anteriores hemos visto algo así: push (hisArr, (.
" xxx "," yyy "," zzz ")); El es la función de empuje para la matriz. También tiene corchetes. Los soportes tienen elementos en el interior. Aquí he mencionado las funciones de impresión y empuje. Todos lo que tienes dentro de los corchetes de una función como en los dos casos anteriores, se llaman argumentos. En el caso de impresión anteriormente, el argumento es $ uno, que es un escalar. En el caso de empuje los argumentos sonhisArr y ("xxx", "yyy", "zzz"). Estos dos argumentos son listas. Una matriz es una lista ordenada, y que es el primer argumento.
El segundo argumento es una lista literal. Los soportes exteriores para los argumentos de una función pueden omitirse. Contexto Scalar Si cualquier operación volvería un escalar o tendría un escalar como argumento, decimos ActivePerl está trabajando en un contexto escalar en ese punto. Considere el siguiente ejemplo: mi $ var = "la cadena"; Esta es una declaración muy simple y es contexto escalar, ya que estamos tratando con escalares a ambos lados del operador de asignación. Considera lo siguiente.
print ($ uno); El argumento de la función de impresión es un escalar, por lo que es un contexto escalar. Lista Contexto Si cualquier operación devolvería una lista o tendría una lista como argumento, decimos ActivePerl está trabajando en un contexto de lista en ese punto. Considere el siguiente ejemplo: (mi $ uno, mi $ dos, mi $ tres) = ("el primero", "segundo", 3); A ambos lados del operador de asignación, tenemos una lista, así que tenemos un contexto lista.
Considere lo siguiente: push (hisArr, ("xxx", "yyy", "zzz")); Los dos argumentos de la función de empuje están listas, así que tenemos un contexto lista. En algunos casos, los argumentos de unas funciones pueden estar formados por escalares y lista. En ese caso ActivePerl está trabajando en ambos contextos. Nota: El hash es una especie de lista. Contexto condicional Dependiendo de la condición, usted puede estar trabajando en un contexto escalar o lista. A medida que aprenda ActivePerl, le dicen estas condiciones. Voy a dar sólo algunos ejemplos aquí.
Considere la matriz siguiente: miarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); Después de la matriz ha sido creado, su variable de matriz se comportaría como una operación y que volvería ya sea la longitud (escalar) de la matriz o una lista de los elementos de la matriz, dependiendo de si se asigna a un escalar o un array ( lista). Cuando se devuelve un escalar, se está trabajando en un contexto escalar. Cuando se devuelve una lista, que está trabajando en un contexto de lista.
En el siguiente código se asigna la variable de matriz a un escalar, por lo que devuelve la longitud de la matriz (es decir cómo ActivePerl se ha hecho para ser - volviendo un escalar por variable de matriz cuando se asigna a un escalar). Lea y probar el código. use strict; print "Content-Type: text /html \\ n \\ n"; miarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); mi $ scal =arr; print $ scal; En el siguiente código se asigna la variable de matriz a una lista, por lo que devuelve la lista de elementos de la matriz (así es como ActivePerl se ha hecho para ser).
Lea y probar el código. use strict; print "Content-Type: text /html \\ n \\ n"; miarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); mili =arr; imprimirli; Las claves y valores funciones hash revisitados En la especificación de Perl o ActivePerl, se dice que la función de claves hash devolvería una lista de todas las claves en el hash si se trabaja en el contexto de lista o que sería devolver el número de llaves en el hash si se trabaja en contexto escalar. Así pues, en el contexto de lista que devuelve una lista; en contexto escalar devuelve un escalar (número).
Esto significa que si se asigna el valor de retorno de la función a una matriz, usted tiene una lista; si lo ha asignado a un escalar que tiene un escalar. Leer y tratar el siguiente código donde la función de teclas está en el contexto de lista, devolviendo una lista porque el valor devuelto se asigna a una matriz.
use strict; print "Content-Type: text /html \\ n \\ n"; mi% fruitColor = (Apple => "púrpura", Plátano => "amarillo", Pera => "verde", Limón => "verde"); misar = teclas (% fruitColor); imprimirar; Leer y tratar el siguiente código donde la función de teclas está en contexto escalar, volviendo un escalar porque el valor devuelto es asignado a un escalar.
use strict; print "Content-Type: text /html \\ n \\ n"; mi% fruitColor = (Apple => "púrpura", Plátano => "amarillo", Pera => "verde", Limón =>