ExpertiDict

Ruby · Avançado · Inglês · Técnico

coerce

/koʊˈɝs/método

Método que um objeto numérico implementa para ensinar ao Ruby como operar quando um Integer ou Float está à esquerda, como em 5 * obj. Devolve um par compatível.

Onde usar

Aparece em classes de valor como Dinheiro ou Vetor que querem operar com números nos dois lados. Sem coerce, 2 * obj lança TypeError.

Em código

M = Struct.new(:v) do
  def *(n) = M.new(v * n)
  def coerce(n) = [self, n]
end
r = 3 * M.new(2)
p r.v  # => 6

Exemplos

Implement coerce so that 2 times money works.

Implemente coerce para que 2 vezes dinheiro funcione.

Without coerce, the integer can't handle my class.

Sem coerce, o inteiro não sabe lidar com a minha classe.

Cuidado

Não é conversão de tipo geral como to_s ou to_i: só entra em ação quando o argumento de um operador numérico não é conhecido.

Veja também

Todos os termos de Ruby