class NilClass
The class of the singleton object nil.
Several of its methods act as operators:
Others act as converters, carrying the concept of nullity to other classes:
While nil doesnβt have an explicitly defined #to_hash method, it can be used in ** unpacking, not adding any keyword arguments.
Another method provides inspection:
Finally, there is this query method:
Public Instance Methods
Source
static VALUE
false_and(VALUE obj, VALUE obj2)
{
return Qfalse;
}
Returns false:
false & true # => false false & Object.new # => false
Argument object is evaluated:
false & raise # Raises RuntimeError.
VALUE
rb_obj_equal(VALUE obj1, VALUE obj2)
{
return RBOOL(obj1 == obj2);
}
Returns whether self and other are the same object:
object = Object.new object == object # => true object == Object.new # => false
Here in class Object, ==, equal?, and eql? are the same method. A subclass may override == to provide class-specific meaning.
Unlike ==, the equal? method should never be overridden by subclasses as it is used to determine object identity (that is, a.equal?(b) if and only if a is the same object as b):
obj = "a" other = obj.dup obj == other #=> true obj.equal? other #=> false obj.equal? obj #=> true
The eql? method returns true if obj and other refer to the same hash key. This is used by Hash to test members for equality. For any pair of objects where eql? returns true, the hash value of both objects must be equal. So any subclass that overrides eql? should also override hash appropriately.
For objects of class Object, eql? is synonymous with ==. Subclasses normally continue this tradition by aliasing eql? to their overridden == method, but there are exceptions. Numeric types, for example, perform type conversion across ==, but not across eql?, so:
1 == 1.0 #=> true 1.eql? 1.0 #=> false
(nil) → true
(untyped obj) → bool
Source
#define case_equal rb_equal
Returns true or false.
Like Object#==, if other is an instance of Object (and not an instance of one of its many subclasses).
This method is commonly overridden by those subclasses, to provide meaningful semantics in case statements.
(untyped obj) → nil
Source
static VALUE
nil_match(VALUE obj1, VALUE obj2)
{
return Qnil;
}
Returns nil.
This method makes it useful to write:
while gets =~ /re/ # ... end
(false | nil) → false
(untyped obj) → bool
Source
#define false_xor true_and
Returns false if object is nil or false, true otherwise:
nil ^ nil # => false nil ^ false # => false nil ^ Object.new # => true
(nil | false) → false
(untyped obj) → bool
Source
#define false_or true_and
Returns false if object is nil or false, true otherwise:
nil | nil # => false nil | false # => false nil | Object.new # => true
() → "nil"
Source
static VALUE
nil_inspect(VALUE obj)
{
return rb_usascii_str_new2("nil");
}
Returns string 'nil':
nil.inspect # => "nil"
() → true
Source
static VALUE
rb_true(VALUE obj)
{
return Qtrue;
}
Returns true. For all other objects, method nil? returns false.
(?untyped eps) → Rational
Source
# File nilclass.rb, line 12 def rationalize(eps = nil) 0r end
Returns zero as a Rational:
nil.rationalize # => (0/1)
Argument eps is ignored.
() → [ ]
Source
static VALUE
nil_to_a(VALUE obj)
{
return rb_ary_new2(0);
}
Returns an empty Array.
nil.to_a # => []
() → Complex
Source
# File nilclass.rb, line 24 def to_c 0i end
Returns zero as a Complex:
nil.to_c # => (0+0i)
() → Float
Source
# File nilclass.rb, line 48 def to_f return 0.0 end
Always returns zero.
nil.to_f #=> 0.0
() → { }
Source
static VALUE
nil_to_h(VALUE obj)
{
return rb_hash_new_capa(0);
}
Returns an empty Hash.
nil.to_h #=> {}
() → 0
Source
# File nilclass.rb, line 36 def to_i return 0 end
Always returns zero.
nil.to_i #=> 0
() → Rational
Source
# File nilclass.rb, line 60 def to_r 0r end
Returns zero as a Rational:
nil.to_r # => (0/1)
() → ""
Source
VALUE
rb_nil_to_s(VALUE obj)
{
return rb_cNilClass_to_s;
}
Returns an empty String:
nil.to_s # => ""