struct

Nil

Inherits Value / Object

The Nil type has only one possible value: nil.

nil is commonly used to represent the absence of a value. For example, String#index returns the position of the character or nil if it's not in the string:

str = "Hello world"
str.index 'e' # => 1
str.index 'a' # => nil

In the above example, trying to invoke a method on the returned value will give a compile time error unless both Int32 and Nil define that method:

str = "Hello world"
idx = str.index 'e'
idx + 1 # Error: undefined method '+' for Nil

The language and the standard library provide short, readable, easy ways to deal with nil, such as Object#try and Object#not_nil!:

str = "Hello world"

# The index of 'e' in str or 0 if not found
idx1 = str.index('e') || 0

idx2 = str.index('a')
if idx2
  # Compiles: idx2 can't be nil here
  idx2 + 1
end

# Tell the compiler that we are sure the returned
# value is not nil: raises a runtime exception
# if our assumption doesn't hold.
idx3 = str.index('o').not_nil!

See Nil literal in the language reference.

Constructors

new(pull : JSON::PullParser) : self
Source

Instance methods

==(other : Nil)

Returns true: Nil has only one singleton value: nil.

Source
clone
Source
hash(hasher)

See Object#hash(hasher)

Source
inspect(io : IO) : Nil

Writes "nil" to the given IO.

Source
inspect

Returns "nil".

Source
not_nil!(message = nil) : NoReturn

Raises NilAssertionError.

If message is given, it is forwarded as error message of NilAssertionError.

See also: Object#not_nil!.

Source
object_id

Returns 0_u64. Even though Nil is not a Reference type, it is usually mixed with them to form nilable types so it's useful to have an object id for nil.

Source
presence

Returns self. This method enables to call the presence method (see String#presence) on a union with Nil. The idea is to return nil when the value is nil or empty.

config = {"empty" => ""}
config["empty"]?.presence   # => nil
config["missing"]?.presence # => nil
Source
same?(other : Nil)

Returns true: Nil has only one singleton value: nil.

Source
same?(other : Reference) : Bool

Returns false.

Source
to_json(json : JSON::Builder) : Nil
Source
to_json_object_key
Source
to_s(io : IO) : Nil

Doesn't write anything to the given IO.

Source
to_s

Returns an empty string.

Source
to_yaml(yaml : YAML::Nodes::Builder) : Nil
Source
try

Doesn't yield to the block.

See also: Object#try.

Source