¿Qué significa el signo de interrogación al final del nombre de un método en Ruby?

Resuelto rtacconi asked hace 15 años • 9 respuestas

¿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 ifconstrucción.

rtacconi avatar Aug 28 '09 16:08 rtacconi
Aceptado

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

chillitom avatar Aug 28 '2009 09:08 chillitom

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 #ordmétodo:

?F.ord # => will return 70
Greg Osuri avatar Dec 10 '2009 03:12 Greg Osuri

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.

Eifion avatar Aug 28 '2009 09:08 Eifion