ExpertiDict

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

super

/ˈsupɚ/palavra-chave

Palavra-chave que chama o mesmo método na próxima classe ou módulo da cadeia de ancestrais. Sem parênteses, repassa os argumentos recebidos; com (), não passa nenhum.

Onde usar

Usada no initialize de subclasses e em módulos que complementam um método. No code review, atenção ao super sem parênteses quando a assinatura mudou: ele repassa os mesmos argumentos.

Em código

class Base
  def oi(nome) = "Oi, #{nome}"
end
class Filha < Base
  def oi(nome) = super.upcase
end
puts Filha.new.oi('ana')  # => OI, ANA

Exemplos

Call super so the parent class can set up its state.

Chame super para a classe-mãe preparar o próprio estado.

Use super() with parentheses to pass no arguments.

Use super() com parênteses para não passar argumentos.

Cuidado

super e super() são diferentes: o primeiro repassa os argumentos atuais, o segundo chama sem argumentos.

Veja também

Todos os termos de Ruby