Tout d'abord, cela ne fonctionne pas comme prévu:
sample = {}
sample[:alpha], sample[:beta], sample[:gamma] = 0
Cela se traduira par:
sample == { alpha: 0, beta: nil, gamma: nil }
Pour obtenir le résultat désiré, vous pouvez utiliser à la place parallel assignment:
sample[:alpha], sample[:beta], sample[:gamma] = 0, 0, 0
Ou, loop through the keys pour attribuer chacun séparément:
[:alpha, :beta, :gamma].each { |key| sample[key] = 0 }
Ou, merge le hachage d'origine avec vos nouveaux attributs:
sample.merge!(alpha: 0, beta: 0, gamma: 0)
Selon ce que vous essayez réellement de faire ici, vous pouvez envisager de donner à votre hachage un default value. Par exemple:
sample = Hash.new(0)
puts sample[:alpha] # => 0
sample[:beta] += 1 # Valid since this defaults to 0, not nil
puts sample # => {:beta=>1}
Combien de clés avez-vous? – Shobhit