ruby - significa - ¿Qué hace el operador único de signo de interrogación(?)?
que significa el signo de interrogacion en c# (3)
Vi a este operador en código HAML. Me pregunto para qué sirve.
Veo los siguientes trabajos:
> ?{
=> "{"
> ?/s
=> " "
> ?a
=> "a"
Y esto no funciona:
> ?ab
SyntaxError: (irb):4: syntax error, unexpected ''?''
Así que supongo que toma un carácter de un argumento y devuelve una cadena con ese carácter.
preguntas:
- ¿Qué hace este operador?
- ¿Cuándo debería uno usarlo?
- Si realmente solo crea una cadena de un carácter, ¿por qué se incluyó en el idioma? ¿No rompe la ortogonalidad del lenguaje? ¿Cuál es el beneficio?
Devuelve una sola cadena de caracteres. Es la forma más corta de escribir un literal de cadena de un solo carácter. Úsalo cuando quieras definir muchas cadenas de un solo carácter. Es una herencia de Ruby <1.9, donde se utiliza para devolver el código ASCII para ese personaje. No entiendo lo que quiere decir con "romper la ortogonalidad del lenguaje".
No es un operador, es un personaje literal. Sin embargo, no hay ningún tipo de carácter en Ruby, por lo que en lugar de una instancia de un tipo de carácter, el literal de carácter se evalúa como la "representación predeterminada de un carácter". En Ruby 1.9+, es una String
de longitud 1, en Ruby 1.8, es un Fixnum
denota el punto de código Unicode del personaje.
Re # 2, un lugar en el que me ha resultado útil es para transmitir que un parámetro que estoy configurando o el valor que estoy probando tiene la intención de ser un solo carácter y no solo que esto simplemente sea una cadena corta. Es una cosa sutil de legibilidad / documentación, pero vale la pena considerarlo para los mantenedores posteriores (incluido yo mismo).