ventajas tutorial sirve rails que para documentacion desventajas descargar ruby

tutorial - ruby wikipedia



¿Hay una forma mejor de verificar cero o longitud== 0 de una cadena en Ruby? (12)

¿Hay alguna forma mejor que la siguiente para verificar si una cadena es nula O tiene una longitud de 0 en Ruby?

if my_string || my_string.length == 0 return true else return false

En C # está el práctico

string.IsNullOrEmpty(myString)

¿Algo similar a eso en Ruby?


Comprobar si hay cadenas vacías en Ruby simple mientras se evitan las excepciones de NameError

Aquí hay algunas buenas respuestas, pero no necesita ActiveSupport o parche de monos para abordar el caso de uso común aquí. Por ejemplo:

my_string.to_s.empty? if defined? my_string

Esto "hará lo correcto" si my_string es nulo o una cadena vacía, pero no generará una excepción NameError si my_string no está definido. Esto es generalmente preferible a los más artificiales:

my_string.to_s.empty? rescue NameError

o es un tipo más detallado, porque las excepciones realmente deberían guardarse para cosas que no espera que ocurran. En este caso, aunque podría ser un error común, una variable indefinida no es realmente una circunstancia excepcional, por lo que debe manejarse en consecuencia.

Su experiencia puede ser diferente.


Cada clase tiene un nil? método:

if a_variable.nil? # the variable has a nil value end

Y las cuerdas tienen el empty? método:

if a_string.empty? # the string is empty }

Recuerde que una cadena no es igual a nil cuando está vacía, entonces, ¿la usa empty? método para verificar si una cadena está vacía.


Como se dijo aquí, Rails (ActiveSupport) tiene un práctico en blank? método y se implementa de esta manera:

class Object def blank? respond_to?(:empty?) ? empty? : !self end end

Bastante fácil de agregar a cualquier proyecto basado en ruby.

La belleza de esta solución es que funciona de forma auto-mágica no solo para cadenas, sino también para matrices y otros tipos.


Cuando no estoy preocupado por el rendimiento, a menudo uso esto:

if my_string.to_s.empty? # It''s nil or empty end


En primer lugar, ten cuidado con ese método:

Como dice Jesse Ezel :

Brad Abrams

"El método puede parecer conveniente, pero la mayor parte del tiempo he descubierto que esta situación surge al tratar de ocultar errores más profundos.

Su código debe adherirse a un protocolo particular sobre el uso de cadenas, y debe comprender el uso del protocolo en el código de la biblioteca y en el código con el que está trabajando.

El protocolo NullOrEmpty suele ser una solución rápida (por lo que el problema real sigue siendo en otro lugar, y tienes dos protocolos en uso) o es la falta de experiencia en un protocolo particular al implementar un nuevo código (y nuevamente, debes saber qué sus valores de retorno son) ".

Y si aplica parche a la clase String ... ¡asegúrese de que NilClass no haya sido parche tampoco !

class NilClass def empty?; true; end end


Konrad Rudolph tiene la respuesta correcta.

Si realmente te molesta, mono parchea la clase String o agrégala a una clase / módulo de tu elección. En realidad, no es una buena práctica cortar los objetos del núcleo del parche a menos que tengas una razón realmente convincente.

class String def self.nilorempty?(string) string.nil? || string.empty? end end

Entonces puedes hacer String.nilorempty? mystring String.nilorempty? mystring


Me gusta hacer esto de la siguiente manera (en un entorno que no sea Rails / ActiveSupport):

variable.to_s.empty?

esto funciona porque:

nil.to_s == "" "".to_s == ""


Otra opción es convertir nil a un resultado vacío sobre la marcha:

(my_string||'''').empty?


Si está dispuesto a requerir ActiveSupport, puede usar el #blank? método, que se define para NilClass y String.


Una alternativa a la propuesta de jcoby sería:

class NilClass def nil_or_empty? true end end class String def nil_or_empty? empty? end end


variable.blank? lo haré. Devuelve verdadero si la cadena está vacía o si la cadena es nula.


nil? se puede omitir en contextos booleanos. En general, puede usar esto para replicar el código C #:

return my_string.nil? || my_string.empty?