Ce morceau de code définit un "setter" de la méthode, de sorte que "express_token" ressemble à un attribut, même si c'est juste le nom de la méthode. Par exemple:
class Foo
def foo=(x)
puts "OK: x=#{x}"
end
end
f = Foo.new
f.foo = 123 # => 123
# OK: x=123
Notez que l'objet "f" n'a pas d'attribut ou d'une variable d'instance nommée "toto" (ni besoin), de sorte que le "foo=" la méthode est juste sucre syntaxique pour permettre à un appel de méthode qui ressemble à une cession. Notez également que de telles méthodes de définition toujours le retour de leur argument, indépendamment de toute return
déclaration ou de la valeur finale.
Si vous êtes à la définition d'un haut-niveau de la méthode de définition, par exemple, dans "irb", alors le comportement est peut être un peu déroutant à cause de l'implicite outre des méthodes de la classe Object. Par exemple:
def bar=(y)
puts "OK: y=#{y}"
end
bar = 123 # => 123, sets the variable "bar".
bar # => 123
Object.new.bar = 123 # => 123, calls our method
# OK: y=123
Object.public_methods.grep /bar/ # => ["bar="]