Higher Order Messaging in Smalltalk – Part 5

Continuação da parte 4.

Processando coleções simultaneamente

O processamento de coleções de forma simultânea e independente não é possível em Smalltalk se apenas usarmos iteradores internos (do, select, collect, reject, etc). Usaremos então streams para o papel de iteradores externos.

O código HOM titles collect, names each é equivalente ao seguinte código:

nameStream := ReadStream on: names.
titles collect: [ :each | each, nameStream next].

Para obter o código modificado vamos fazê-lo passar no teste abaixo:

O que precisamos fazer é detectar a ocorrência de duas collections e providenciar para que haja a iteração coordenada entre elas aplicando-se simultaneamente a operação desejada. Veja o resultado que atende ao teste:

O retângulo vermelho acima realça o código introduzido.

O código abaixo calcula o produto escalar se considerarmos que cada collection representa um vetor:

Continua na parte 6.

Anúncios

2 Respostas para “Higher Order Messaging in Smalltalk – Part 5

  1. Pingback: Higher Order Messaging in Smalltalk – Part 3 | Crab Log

  2. Pingback: Higher Order Messaging in Smalltalk – Part 4 | Crab Log

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