Quel est le but de l'opérateur point d'interrogation en Ruby ?
Parfois, ça ressemble à ça :
assert !product.valid?
parfois, c'est dans un if
construire.
Quel est le but de l'opérateur point d'interrogation en Ruby ?
Parfois, ça ressemble à ça :
assert !product.valid?
parfois, c'est dans un if
construire.
Il s'agit d'une convention de style de code ; elle indique qu'une méthode renvoie une valeur booléenne (vrai ou faux) ou un objet pour indiquer une valeur vraie (ou valeur "véridique").
Le point d'interrogation est un caractère valide à la fin du nom d'une méthode.
https://docs.ruby-lang.org/en/2.0.0/syntax/methods_rdoc.html#label-Method+Noms
Merci, mais est-ce que cette convention signifie qu'il fait le logique uniquement ou pourrait-il y avoir des effets secondaires ? Il est amusant de constater que c'est une sorte de piratage autour des langages typés avec le type de retour dans le code.
Dans ce cas, il s'agit strictement d'une convention de dénomination des méthodes. Il n'y a pas d'application d'une valeur de retour booléenne. Le fait que le nom de la méthode se termine par un point d'interrogation ne signifie pas que la méthode doit retourner un booléen ...mais il est certain qu'elle devrait retourner un booléen. Cependant, il existe plusieurs autres utilisations de la fonction ?
en Ruby (est un opérateur ternaire, convertissant un caractère en son entier ASCII, utilisation en test
), dont beaucoup sont couverts dans les autres réponses ici.
@Jason Pour votre information, même les langages fortement typés ont des conventions comme celle-ci. Par exemple, en Java, les méthodes qui renvoient une valeur booléenne sont souvent préfixées par "is", comme dans isEmpty()
, isDigit()
etc. En Ruby, les mêmes méthodes seraient écrites empty?
y digit?
qui est un peu plus agréable, selon moi.
Notez également ?
accompagné d'un caractère sert de raccourci pour un littéral de chaîne à un seul caractère depuis Ruby 1.9.
Par exemple :
?F # => is the same as "F"
Il est référencé près du bas de la page section sur les chaînes de caractères de la documentation ruby :
Il existe également une notation littérale des caractères pour représenter des caractères uniques. de caractères uniques, dont la syntaxe est un point d'interrogation ( ?) suivi d'un caractère unique ou d'une séquence d'échappement qui correspond à un seul point de code dans le codage script :
?a #=> "a" ?abc #=> SyntaxError ?\n #=> "\n" ?\s #=> " " ?\\ #=> "\\" ?\u{41} #=> "A" ?\C-a #=> "\x01" ?\M-a #=> "\xE1" ?\M-\C-a #=> "\x81" ?\C-\M-a #=> "\x81", same as above ?あ #=> "あ"
Avant Ruby 1.9, cela retournait le code ASCII du caractère. Pour obtenir l'ancien comportement dans le Ruby moderne, vous pouvez utiliser la fonction #ord
méthode :
?F.ord # => will return 70
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.
3 votes
Le point d'interrogation à la fin d'une fonction n'est pas un opérateur, c'est un caractère ordinaire. Le point d'interrogation accompagné de deux points est un opérateur conditionnel ternaire. Le point d'interrogation seul est un opérateur de citation unaire. Voir stackoverflow.com/questions/16641205/