Hi Could you please tell me when to use .nil? , .empty?, .blank? .What are the difference between them.. For example I have params[:company][:whichCompany] And to check for it is null I first attempted all these and finally the following worked if !params[:company][:whichCompany].empty? So now really i am confused .Please tell me the differnce Thanks in advance Sijo
on 2008-07-24 09:05
on 2008-07-24 09:15
On Thu, Jul 24, 2008 at 9:00 AM, Sijo Kg <sijo@maxxion.com> wrote: > Could you please tell me when to use .nil? , .empty?, .blank? .What > are the difference between them.. For example I have > params[:company][:whichCompany] > And to check for it is null I first attempted all these and finally the > following worked > if !params[:company][:whichCompany].empty? > > So now really i am confused .Please tell me the differnce nil? tests whether the object is exactly nil, that is whether it is the one and only want instance of NilClass. empty? is a method some objects respond to. You need to check the documentation for each case. For example, and empty array is one that is not nil (it is an array right?) and has no elements. An empty string is one that is not nil (it is a string right?) and has no bytes, nothing. The blank? method you ask for does not belong to Ruby, it is a Rails extension: http://api.rubyonrails.com/classes/Object.html#M000011.
on 2008-07-24 09:17
On Thursday 24 July 2008, Sijo Kg wrote: > Thanks in advance > Sijo .nil? tests whether the receiver is the nil object, that is the only instance of class NilClass, which is often used to indicate an invalid value. This method is defined in class Object, and thus is availlable for every object. The other two methods, instead, are defined only for specific classes, so the answer depends. Usually, empty? is used to test whether an object is "empty", for some class-depending meaning of empty. For example, String#empty? returns true if the string contains no characters, Array#empty? and Hash#empty? returns true if the array or hash has no entries. Other classes may define an empty? method in other ways. Note that, unlike nil?, empty? isn't defined for all classes. Regarding blank?, I never heard of it, so I can't help you. You should look at the documentation of the class defining it. Here are some examples about nil? and empty? nil.nil? => true false.nil? => false 1.nil? => false 0.nil? => false "".nil? => false [].nil? => false "".empty? => true "abc".empty? => false [].empty? => true [1, 2, 3].empty? => false 1.empty? => NoMethodError The last example means that the empty? method is not defined for class Fixnum I hope this helps Stefano
on 2008-07-24 15:44
Stefano Crocco wrote:
> Regarding blank?, I never heard of it
It's a Rails method on the Object class that 'combines' the test for
nil?
and empty?. Simplifies 'if thing.nil? || thing.empty?' to 'if
thing.blank?'.
Best regards,
Bill
on 2008-07-24 17:38
Isn't .nil? and .empty? in a way testing for a very similar situation? Some instance var: @colour = 'black' Compared: @colour = '' @colour = nil Which one to prefer of these?
on 2008-07-24 19:20
Hi Marc, Marc Heiler wrote: > Isn't .nil? and .empty? in a way testing for a very similar > situation? Not in Ruby. empty? is true for a String of length 0. The value of the String is not Nil. It turns out that Nil is very important in evaluations since it's one of the two items in Ruby that evaluates to false. irb(main):001:0> str = String.new => "" irb(main):002:0> str.length => 0 irb(main):003:0> if str then puts 'a zero-length string is still a string' end a zero-length string is still a string => nil irb(main):004:0> str = nil => nil irb(main):005:0> if str.nil? then puts 'assigning a nil value essentially kills the object' end assigning a nil value essentially kills the object => nil. HTH, Bill
on 2008-07-24 19:56
blank? is not only a combination. blank? also test if there are printable characters in a string: \n".empty? => false "\n".blank? => true Niklas Heinrich
on 2008-07-24 20:18
On Thu, Jul 24, 2008 at 7:49 PM, Niklas Heinrich <niklas@pirabay.de> wrote: > blank? is not only a combination. > blank? also test if there are printable characters in a string: More precisely any \S. Also false is blank? but the integer 0 is not.
on 2010-07-15 07:45
Xavier Noria wrote: > On Thu, Jul 24, 2008 at 9:00 AM, Sijo Kg <sijo@maxxion.com> wrote: > >> Could you please tell me when to use .nil? , .empty?, .blank? .What >> are the difference between them.. For example I have >> params[:company][:whichCompany] >> And to check for it is null I first attempted all these and finally the >> following worked >> if !params[:company][:whichCompany].empty? >> >> So now really i am confused .Please tell me the differnce > > nil? tests whether the object is exactly nil, that is whether it is > the one and only want instance of NilClass. > > empty? is a method some objects respond to. You need to check the > documentation for each case. For example, and empty array is one that > is not nil (it is an array right?) and has no elements. An empty > string is one that is not nil (it is a string right?) and has no > bytes, nothing. > > The blank? method you ask for does not belong to Ruby, it is a Rails > extension: http://api.rubyonrails.com/classes/Object.html#M000011. This is answer was concise and helpful. Thanks! I personally find this confusing: >> a[:real]=false >> a[:real] => false >> a[:real].blank? => true ?? if I populated a[:real] with false, why does '.blank?' return true? That's confusing. But hey, if you can't win them, join them. I love Ruby and Rails!
on 2010-07-15 09:42
On Thu, Jul 15, 2010 at 7:45 AM, Michael Nissim <info@israelunique.com> wrote: > I personally find this confusing: > >>> a[:real]=false >>> a[:real]   => false >>> a[:real].blank?   => true   ?? > > if I populated a[:real] with false, why does '.blank?' return true? > That's confusing. But hey, if you can't win them, join them. I love Ruby > and Rails! It should work $ script/console Loading development environment (Rails 2.3.2) >> a = {} => {} >> a[:real] = false => false >> a[:real].blank? => true false is blank?, no matter where it is stored.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.