ExpertiDict

Ruby · Essencial · Inglês · Técnico

duck typing

/dʌk ˈtaɪpɪŋ/locução

Estilo em que importa o objeto responder aos métodos chamados, não a sua classe. Se anda e grasna como um pato, serve como pato.

Onde usar

Em Ruby você raramente checa is_a?; confia que o objeto entende o método. Isso facilita testar com dublês, mas um objeto sem o método só falha em execução, com NoMethodError.

Em código

class Pato
  def fala = 'quack'
end
class Robo
  def fala = 'bip'
end
[Pato.new, Robo.new].each { |x| puts x.fala }

Exemplos

We rely on duck typing, so any object with a call method works.

Contamos com duck typing, então qualquer objeto com o método call serve.

The test double only needs to quack like the real client.

O dublê de teste só precisa se comportar como o cliente real.

Cuidado

Não é ausência de tipos: o objeto continua tendo classe, só que o código não precisa consultá-la.

Origem

Vem do teste do pato: se anda como um pato e grasna como um pato, então é um pato.

Veja também

Todos os termos de Ruby