Vous ne verrez probablement pas la construction à l'extérieur de l'ossature de l'ascenseur; Je soupçonne que c'est surtout Ruby-Envy.
Presque tous les autres projets Scala se déroberont à cette syntaxe. Pas à cause du point d'interrogation final, mais parce que c'est encore une autre façon d'introduire des underscores dans votre code - et le symbole est déjà trop surchargé.
Basé sur une évaluation de plusieurs projets Scala, la notation peut être raisonnablement décrite comme non-idiomatique.
MISE À JOUR
La raison pour laquelle le trait de soulignement est nécessaire est de lever l'ambiguïté de la notation infixe, dans laquelle:
x?y
serait lu comme
x.?(y)
avec ?
étant nom de la méthode. Attendu que:
x_?y
Il est clair que x_?
comme démarque étant atomique.
La syntaxe est un exemple de ce qui est officiellement connu comme un « identifiant mixte », et vise à permettre aux définitions telles que
def prop_=(v:String) = ... //setter
def unary_- = ... //prefix negation operator
Il pourrait (sans doute) être considéré comme un hack lorsque construction similaire est utilisé Il suffit de placer un point d'interrogation à la fin du nom d'une méthode.
Question similaire: http://stackoverflow.com/questions/1598410/use-of-special-characters-in-function-names – aioobe