ExpertiDict

Ruby · Intermediário · Inglês · Técnico

Forwardable

/ˈfɔɹwɚdəbəl/substantivo

Módulo da biblioteca padrão que adiciona def_delegator e def_delegators para repassar métodos a outro objeto, normalmente guardado numa variável de instância. Facilita composição no lugar de herança.

Onde usar

Aparece ao envolver um array ou outro objeto expondo só parte da interface dele. Usa-se com extend Forwardable dentro da classe.

Em código

require "forwardable"
class Fila
  extend Forwardable
  def_delegators :@itens, :size, :<<
  def initialize; @itens = []; end
end
f = Fila.new
f << 1; p f.size  # => 1

Exemplos

I delegated size and push to the inner array.

Deleguei size e push para o array interno.

Forwardable keeps the class interface small.

O Forwardable mantém a interface da classe pequena.

Cuidado

Não herde de Array só para ganhar métodos; compor com Forwardable evita expor uma API enorme sem controle.

Sinônimos

delegação

Veja também

Todos os termos de Ruby