¿Qué significa el signo de interrogación al final del nombre de un método en Ruby?
¿Cuál es el propósito del operador de signo de interrogación en Ruby?
A veces aparece así:
assert !product.valid?
a veces está en una if
construcción.
Es una convención de estilo de código; indica que un método devuelve un valor booleano (verdadero o falso) o un objeto para indicar un valor verdadero (o valor "veraz").
El signo de interrogación es un carácter válido al final del nombre de un método.
https://docs.ruby-lang.org/en/2.0.0/syntax/methods_rdoc.html#label-Method+Names
También tenga en cuenta ?
que junto con un carácter actúa como abreviatura de un literal de cadena de un solo carácter desde Ruby 1.9.
Por ejemplo:
?F # => is the same as "F"
Se hace referencia a esto cerca de la parte inferior de la sección de literales de cadena de los documentos de Ruby :
También hay una notación literal de caracteres para representar cadenas de un solo carácter, cuya sintaxis es un signo de interrogación (?) seguido de un carácter único o una secuencia de escape que corresponde a un único punto de código en la codificación del 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 ?あ #=> "あ"
Antes de Ruby 1.9, esto devolvía el código de carácter ASCII del carácter. Para obtener el comportamiento anterior en Ruby moderno, puedes usar el #ord
método:
?F.ord # => will return 70
Es una convención en Ruby que los métodos que devuelven valores booleanos terminan en un signo de interrogación. No tiene más significado que eso.