4 votes

Puis-je surcharger/créer un opérateur unaire postfix ?

J'aimerais créer deux opérateurs unary-postfix. ! y !! pour la classe Numeric en ruby. Je l'ai défini comme ceci jusqu'à présent

class Numeric
  def !
    (1..self).inject(:*)
  end

  def !!
    if self.even?
      (2..self).step(2).inject(:*)
    else
      (1..self).step(2).inject(:*)
    end
  end
end

Cependant, cela signifie que je dois appeler 5.! y 5.!! . Je sais que vous pouvez définir des opérateurs préfixes unaires tels que +@ y -@ mais je me demandais si je pouvais définir un opérateur postfixe unaire afin de pouvoir appeler 5! y 5!! au lieu de 5.! y 5.!! .

4voto

user1934428 Points 3811

Non. Premièrement, il n'y a pas d'opérateurs postfixes en Ruby, donc l'analyseur syntaxique n'a pas pu en identifier un. Deuxièmement, même si nous avions des opérateurs postfixes, un point d'exclamation de fin fait partie du nom d'une méthode, donc si vous avez dans votre programme une méthode foo ! il serait interprété comme une méthode foo! pas comme foo con ! appliqué.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X