Ruby · Avançado · Inglês · Técnico
deconstruct keys
Método que um objeto implementa para participar de pattern matching com hash, como em case obj in {x:, y:}. Recebe as chaves pedidas e devolve um hash com os valores.
Onde usar
Aparece em classes próprias que querem ser desestruturadas com case e in. Struct e Data já o fornecem; em classes comuns você mesmo o define.
Em código
class Ponto
def initialize(x, y); @x, @y = x, y; end
def deconstruct_keys(_k) = {x: @x, y: @y}
end
case Ponto.new(1, 2)
in {x:, y:} then puts x + y # => 3
endExemplos
I defined deconstruct_keys so the class works in case in.
Defini deconstruct_keys para a classe funcionar no case in.
Struct already ships with deconstruct keys.
O Struct já vem com deconstruct keys.
Cuidado
Não o confunda com deconstruct, sem keys, que devolve um array para padrões posicionais como in [a, b].