ProfStef: Tipos básicos: Symbols

pharo

Tutorial do Pharo.

Abra o tutorial em português do ProfStef na lição Tipos básicos: Symbols.

pharo6-pharo-tutorials-submenu

pharotut-profstef-br-symbols-lesson

Symbols são objetos e podem receber mensagens como todo objeto. Representam um conjunto de caracteres (Character) assim com as strings mas com a característica de serem únicos, isto é, dois objetos Symbol com a mesma sequência de Characters são idênticos e ocupam o mesmo espaço da memória, o que não ocorre no casos de duas Strings.

Inspecione as várias expressões para apreender detalhes sobre os retornos das expressões.

As expressões (2 asString) == (2 asString)  e (2 asString) asSymbol == (2 asString) asSymbol ilustram as diferenças entre uma String e um Symbol. == compara dois objetos e retorna true se são o mesmo objeto.

Nota:

Poderíamos ser tentados a simplificar as expressões

(2 asString) == (2 asString)  e

(2 asString) asSymbol == (2 asString) asSymbol para

‘2’ == ‘2’ e

#’2′ == #’2′.

#’2′ == #’2′ retornaria true como esperado.

pharotut-literal-symbol-pointer-comparison

Mas ‘2’ == ‘2’, surpreendentemente retornaria true também.

pharotut-literal-string-pointer-comparison

A causa disto é que objetos literais tem um tratamento visando eficiência que evita o uso de memória para representações redundantes. Voltaremos a isto quando tivermos outros tipos de objetos para lidar.

Nota:

As strings são mutáveis mas os symbols não. Seus caracteres não podem ser substituídos.

pharotut-symbols-cannot-be-modified

Isto, entre outras coisas, será detalhado em outros posts. Aqui o foco principal é a sintaxe com incursões semânticas moderadas ao estritamente necessário.

Voltar à página do tutorial.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s