Ruby · Intermediário · Inglês · Técnico
super
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, ANAExemplos
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.