Sintaxe dos métodos

Um método é uma sequência de expressões precedida pelo padrão da mensagem que o ativa e, opcionalmente, por uma declaração de variáveis temporárias. Variáveis temporárias são acessíveis apenas para as expressões do método, e desaparecem após o término de sua execução. A declaração das variáveis temporárias consiste em um conjunto de nomes de variáveis delimitado por 2 barras verticais.

Um método é sempre implementado dentro de uma determinada classe e será ativado sempre que alguma instância de sua classe, ou de uma sub-classe desta, receber uma mensagem com o seu padrão de mensagem (desde que não tenha sido redefinido para a sub-classe).

Comentários podem ser incluidos livremente no interior dos métodos, sob a forma de textos delimitados por aspas duplas.

Como exemplo, seja o método abaixo, que poderia ser incluído na classe Number para obter a potência de ordem n (inteiro não negativo) de um número qualquer:

potencia: expoente
"responde com o valor do receptor elevado à potência dada por expoente"
|result|
result := 1.
expoente timesRepeat: [result := self * result].
^ result

A primeira linha é o padrão da mensagem, onde o seletor é potencia:, com um argumento formal, expoente. A variável temporária result é usada somente para apoiar o algoritmo. A pseudo-variável self refere-se ao objeto receptor da mensagem que é, no caso, o número a ser elevado à potência expoente. A última linha indica que o método retornará o valor final de result.

Após implementado na classe Number, a expressão

5 potência: 2

retornará o valor 25.