Когда я не буду волноваться по поводу производительности, я буду часто использовать это:
if my_string.to_s.empty?
# It's nil or empty
end
Если Вы готовы потребовать ActiveSupport, можно просто использовать #blank?
метод, который определяется и для NilClass и для Строки.
Альтернатива предложению jcoby была бы:
class NilClass
def nil_or_empty?
true
end
end
class String
def nil_or_empty?
empty?
end
end
Как это было сказано здесь, прежде чем направляющие (ActiveSupport) имеют удобное пробел? метод и это реализованы как это:
class Object
def blank?
respond_to?(:empty?) ? empty? : !self
end
end
Довольно легкий добавить к любому основанному на рубине проекту.
красота этого решения состоит в том, что оно работает auto-magicaly не только для Строк, но также и для Массивов и других типов.
nil?
может быть опущен в булевых контекстах. Обычно можно использовать это для тиражирования кода C#:
return my_string.nil? || my_string.empty?
В первую очередь, остерегайтесь того метода:
Как Jesse Ezel говорит:
"Метод мог бы казаться удобным, но большую часть времени я нашел, что эта ситуация является результатом попытки покрыть более глубокие ошибки.
Ваш код должен придерживаться конкретного протокола на использовании строк, и необходимо понять использование протокола в коде библиотеки и в коде, с которым Вы работаете.
протокол NullOrEmpty обычно является быстрым исправлением (таким образом, настоящая проблема все еще где-то в другом месте, и Вы получили два используемые протокола), или это - отсутствие экспертных знаний в конкретном протоколе при реализации нового кода (и снова, необходимо действительно знать то, что возвращаемые значения)".
И если Вы исправляете Строковый класс... быть уверены , NilClass не был патчем ни один !
class NilClass
def empty?; true; end
end
У Konrad Rudolph есть правильный ответ.
, Если это действительно прослушивает Вас, патч обезьяны Строковый класс или добавляет его к классу/модулю по Вашему выбору. Это действительно не, хорошая практика обезьяне исправляет базовые объекты, если у Вас нет действительно неопровержимого довода все же.
class String
def self.nilorempty?(string)
string.nil? || string.empty?
end
end
Тогда можно сделать String.nilorempty? mystring
Каждый класс имеет nil?
метод:
if a_variable.nil?
# the variable has a nil value
end
И строки имеют empty?
метод:
if a_string.empty?
# the string is empty
}
Помнят, что строка делает не равный nil
, когда это пусто, так используйте empty?
метод, чтобы проверить, пуста ли строка.
переменная.пусто? сделаю это. Он возвращает истину, если строка пуста или если строка равна нулю.