*   >> Leitura Educação Artigos >> science >> programação

ActivePerl Tipos variável e Context

ActivePerl Tipos de variáveis ​​e Basics contexto de ActivePerl - Parte 11 Introdução Esta é parte de minha série 11, Noções básicas de ActivePerl. Nesta parte da série, nós olhamos o que é chamado de tipos de dados ActivePerl e que também é chamado de contexto escalar e do contexto de lista. Nota: Se você não pode ver o código ou se você acha que alguma coisa está faltando (link quebrado, imagem ausente), apenas contacte-me em [email protected]. Ou seja, contacte-me para o menor problema que você tem sobre o que você está lendo.

Os tipos de dados Perl tem três tipos de dados embutidos, que são chamados os escalares, arrays e hashes. Significado de um Scalar Em termos simples, um escalar é uma string ou um número. Qualquer variável que identifica um escalar começa com $. Um escalar é o que temos vindo a referir como um valor simples. Exemplo, my $ var; $ var = "algum texto ou um número sem aspas"; Temos visto muitos exemplos de escalar. Significado de um Array Uma matriz é uma lista ordenada de escalares. Vimos exemplos disso. Qualquer variável que identifica um conjunto deve começar com @.

Significado de Hash Um hash é uma lista não ordenada de escalares. Uma diferença principal entre um hash e uma matriz é que os valores do hash são indexados por chaves de cordas associadas, enquanto os valores de um array são indexados por números. Qualquer variável que identifica um hash começa com%. Temos visto exemplos de hashes. Nome variável válido Do exposto, vemos que uma variável começa com qualquer um, $, @ ou%. Depois que você deve ter uma letra ou sublinhado.

Depois disso, você pode ter qualquer número de sublinhados, letras ou dígitos em qualquer ordem, para formar o nome da variável. A lista A lista é uma coleção de escalares separados por vírgulas, delimitados por parênteses. Um exemplo é: ("o primeiro", "o segundo", 3) Há três escalares lá: duas cordas e um número. Você pode ter listas em ambos os lados do operador de atribuição.

Considere a seguinte linha: (my $ um, meu US $ dois, meu US $ três) = ("o primeiro", "o segundo", 3); Existem duas listas aqui: uma do lado esquerdo do operador de atribuição e o outro do lado direito do operador de atribuição. Eu intencionalmente ambas as listas para ter três escalares cada. A lista da direita tem escalares reais. O da esquerda tem apenas variáveis. Cada uma das variáveis ​​para a lista à esquerda, vai realizar o escalar correspondente da lista à direita. Eu espero que você está apreciando o significado da lista em ActivePerl.

Leia e tente o seguinte código: use strict; print "Content-Type: text /html \\ n \\ n"; (my $ um, meu US $ dois, meu US $ três) = ("o primeiro", "o segundo", 3); imprimir $ um; print "print $ dois; print" print $ três; print "Você deve ter os três valores escalares apresentada uma lista pode ser atribuído a uma outra lista de variáveis ​​correspondentes, como mostrado acima No entanto, a lista também pode ser atribuído a uma matriz como mostrado no código a seguir (leia e experimentá-lo)..

: use strict; imprimir "Content-Type: text /html \\ n \\ n"; minhaarr = ("o primeiro", "o segundo", 3); printarr; Este método de atribuição de uma lista é o preferido, quando você não sabe o número de elementos na lista, ou quando a lista é muito longa argumentos para uma função Vimos a função de impressão Na primeira amostra de código acima, temos imprimir $ um;.. Ele também pode ser "print ($ um); ", mas os suportes são geralmente omitido Em um dos capítulos anteriores, vimos algo como: push (hisArr, (." xxx "," yyy "," zzz ")); A é a função impulso para a matriz. Ele também tem suportes.

Os suportes têm itens dentro. Aqui eu já mencionei as funções de impressão e de envio. Todos o que você tem dentro dos colchetes de uma função como nos dois casos acima, são chamados Argumentos. No caso de impressão acima, o argumento é um $, que é um escalar. No caso de empurrar os argumentos sãohisArr e ("XXX", "YYY", "ZZZ"). Esses dois argumentos são listas. Uma matriz é uma lista ordenada, e que é o primeiro argumento. O segundo argumento é uma lista literal. Os suportes ultraperiféricas para os argumentos de uma função pode ser omitida.

Contexto escalar Se qualquer operação iria retornar um escalar ou possa ter um escalar como argumento, dizemos ActivePerl está trabalhando em um contexto escalar naquele ponto. Considere o seguinte exemplo: my $ var = "a string"; Esta é uma afirmação muito simples e é contexto escalar, como estamos lidando com escalares em ambos os lados do operador de atribuição. Considere o seguinte. print ($ um); O argumento da função de impressão é um escalar, de modo que é um contexto escalar.

Lista de contexto Se qualquer operação iria retornar uma lista ou teria uma lista como argumento, dizemos ActivePerl está trabalhando em um contexto de lista nesse momento. Considere o seguinte exemplo: (my $ um, meu US $ dois, meu US $ três) = ("o primeiro", "o segundo", 3); Em ambos os lados do operador de atribuição, nós temos uma lista, por isso temos um contexto de lista. Considere o seguinte: push (hisArr, ("xxx", "yyy", "zzz")); Os dois argumentos da função push são listas, por isso temos um contexto de lista.

Em alguns casos, os argumentos de uma função pode ser feita de escalares e lista. Nesse caso ActivePerl está a trabalhar em ambos os contextos. Nota: O hash é uma espécie de lista. Contexto condicional Dependendo da condição, você pode estar trabalhando em um contexto escalar ou uma lista. Como você aprende ActivePerl, você é dito estas condições. Vou dar apenas alguns exemplos aqui.

Considere o seguinte array: minhaarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); Depois de a matriz ter sido criada, a variável de matriz se comportaria como uma operação e iria retornar tanto o comprimento (escalar) da matriz ou uma lista dos elementos da matriz, dependendo de se ele é atribuído a um escalar ou um array ( Lista). Quando ele retorna um escalar, você está trabalhando em um contexto escalar. Quando ele retorna uma lista, você está trabalhando em um contexto de lista.

No código a seguir a variável de matriz é atribuído a um escalar, por isso, retorna o comprimento da matriz (que é a forma como o ActivePerl foi feito para ser - retornando por uma variável de matriz escalar quando atribuído a um escalar). Leia e tentar o código. use strict; print "Content-Type: text /html \\ n \\ n"; minhaarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); my $ scal =arr; print $ scal; No código a seguir a variável de matriz é atribuído a uma lista, de modo que devolve a lista dos elementos da matriz (que é a forma como o ActivePerl foi feito para ser).

Leia e tentar o código. use strict; print "Content-Type: text /html \\ n \\ n"; minhaarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); meuli =arr; imprimirli; O hash chaves e valores funções revisitados Na especificação Perl ou ActivePerl, diz-se que a função de chaves de hash iria retornar uma lista de todas as chaves no hash se trabalhar no contexto de lista ou ele iria retornar o número de chaves no hash se trabalhar no contexto escalar. Assim, no contexto da lista que retorna uma lista; em contexto escalar ele retorna um escalar (número).

Isto significa que se você atribuir o valor de retorno da função para um array, você tem uma lista; se você atribuí-la a um escalar você tem um escalar. Leia e tente o seguinte código onde a função chaves está em contexto de lista, retornando uma lista, porque o valor devolvido é atribuído a uma matriz.

use strict; print "Content-Type: text /html \\ n \\ n"; my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão => "verde"); meusar = teclas (fruitColor%); imprimirar; Leia e tente o seguinte código onde a função chaves está em contexto escalar, retornando um escalar porque o valor devolvido é atribuído a um escalar.

use strict; print "Content-Type: text /html \\ n \\ n"; my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão =>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.