abstract class Class
Defined in:
class.crClass Method Summary
- .==(other : Class)
 - .===(other)
 - 
        .cast(other) : self
        
          
Casts
otherto this class. - .clone
 - .dup
 - 
        .from_json(string_or_io, root : String) : self
        
          
Deserializes the given JSON in string_or_io into an instance of
self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. - 
        .from_json(string_or_io) : self
        
          
Deserializes the given JSON in string_or_io into an instance of
self. - .from_yaml(string : String) : self
 - .hash
 - .inspect(io)
 - 
        .name : String
        
          
Returns the name of this class.
 - .to_s(io)
 - 
        .|(other : U.class)
        
          
Returns the union type of
selfandother. 
Instance Method Summary
- #==(other : Class)
 - #===(other)
 - 
        #cast(other) : self
        
          
Casts
otherto this class. - #clone
 - #dup
 - 
        #from_json(string_or_io, root : String) : self
        
          
Deserializes the given JSON in string_or_io into an instance of
self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. - 
        #from_json(string_or_io) : self
        
          
Deserializes the given JSON in string_or_io into an instance of
self. - #from_yaml(string : String) : self
 - #hash
 - #inspect(io)
 - 
        #name : String
        
          
Returns the name of this class.
 - #to_s(io)
 - 
        #|(other : U.class)
        
          
Returns the union type of
selfandother. 
Macro Summary
- def_clone
 - 
        def_equals(*fields)
        
          
Defines an
#==method by comparing the given fields. - def_equals_and_hash(*fields)
 - 
        def_hash(*fields)
        
          
Defines a
#hashmethod computed from the given fields. - 
        delegate(*methods, to object)
        
          
Delegate methods to to.
 - 
        forward_missing_to(delegate)
        
          
Forwards missing methods to delegate.
 - 
        getter(*names)
        
          
Defines getter methods for each of the given arguments.
 - 
        getter!(*names)
        
          
Defines raise-on-nil and nilable getter methods for each of the given arguments.
 - 
        getter?(*names)
        
          
Defines query getter methods for each of the given arguments.
 - 
        property(*names)
        
          
Defines property methods for each of the given arguments.
 - 
        property!(*names)
        
          
Defines raise-on-nil property methods for each of the given arguments.
 - 
        property?(*names)
        
          
Defines query property methods for each of the given arguments.
 - 
        setter(*names)
        
          
Defines setter methods for each of the given arguments.
 
Instance methods inherited from struct Value
  
  
    
      ==(other)
    ==, 
    
  
    
      dup
    dup
    
  
    
  
    
  Instance methods inherited from class Object
  
  
    
      !=(other)
    !=, 
    
  
    
      !~(other)
    !~, 
    
  
    
      ==(other)
    ==, 
    
  
    
      ===(other)===(other : YAML::Any)
===(other : JSON::Any) ===, =~(other) =~, class class, crystal_type_id crystal_type_id, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, tap(&block) tap, to_json to_json, to_pretty_json(io : IO)
to_pretty_json to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml
to_yaml(io : IO) to_yaml, try(&block) try
Class methods inherited from class Object
  
  
    
      ==(other : Class)
    ==, 
    
  
    
      ===(other)
    ===, 
    
  
    
      cast(other) : self
    cast, 
    
  
    
      clone
    clone, 
    
  
    
      dup
    dup, 
    
  
    
      from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string : String) : self from_yaml, hash hash, inspect(io) inspect, name : String name, to_s(io) to_s, |(other : U.class) |
Class Method Detail
Casts other to this class.
This is the same as using as, but allows the class to be passed around as
an argument. See the [documentation on
as](//crystal-lang.org/docs/syntax_and_semantics/as.html) for more
information.
klass = Int32
number = [99, "str"][0]
typeof(number)             # => (String | Int32)
typeof(klass.cast(number)) # => Int32Deserializes the given JSON in string_or_io into
an instance of self, assuming the JSON consists
of an JSON object with key root, and whose value is
the value to deserialize.
Int32.from_json(%({"main": 1}), root: "main").should eq(1)Deserializes the given JSON in string_or_io into
an instance of self. This simply creates a parser = JSON::PullParser
and invokes new(parser): classes that want to provide JSON
deserialization must provide an def initialize(parser : JSON::PullParser
method.
Int32.from_json("1")                # => 1
Array(Int32).from_json("[1, 2, 3]") # => [1, 2, 3]Returns the union type of self and other.
Int32 | Char # => (Int32 | Char)Instance Method Detail
Casts other to this class.
This is the same as using as, but allows the class to be passed around as
an argument. See the [documentation on
as](//crystal-lang.org/docs/syntax_and_semantics/as.html) for more
information.
klass = Int32
number = [99, "str"][0]
typeof(number)             # => (String | Int32)
typeof(klass.cast(number)) # => Int32Deserializes the given JSON in string_or_io into
an instance of self, assuming the JSON consists
of an JSON object with key root, and whose value is
the value to deserialize.
Int32.from_json(%({"main": 1}), root: "main").should eq(1)Deserializes the given JSON in string_or_io into
an instance of self. This simply creates a parser = JSON::PullParser
and invokes new(parser): classes that want to provide JSON
deserialization must provide an def initialize(parser : JSON::PullParser
method.
Int32.from_json("1")                # => 1
Array(Int32).from_json("[1, 2, 3]") # => [1, 2, 3]Macro Detail
Defines a #clone method that returns a copy of this
object with all instance variables cloned (#clone is
in turn invoked on them).
Defines an #== method by comparing the given fields.
The generated #== method has a self restriction.
class Person
  def initialize(@name, @age)
  end
  # Define a `==` method that compares @name and @age
  def_equals @name, @age
endDefines #hash and #== method from the given fields.
The generated #== method has a self restriction.
class Person
  def initialize(@name, @age)
  end
  # Define a hash method based on @name and @age
  # Define a `==` method that compares @name and @age
  def_equals_and_hash @name, @age
endDefines a #hash method computed from the given fields.
class Person
  def initialize(@name, @age)
  end
  # Define a hash method based on @name and @age
  def_hash @name, @age
endDelegate methods to to.
Note that due to current language limitations this is only useful when no captured blocks are involved.
class StringWrapper
  def initialize(@string)
  end
  delegate downcase, to: @string
  delegate gsub, to: @string
  delegate empty?, capitalize, to: @string
end
wrapper = StringWrapper.new "HELLO"
wrapper.downcase       # => "hello"
wrapper.gsub(/E/, "A") # => "HALLO"
wrapper.empty?         # => false
wrapper.capitalize     # => "Hello"Forwards missing methods to delegate.
class StringWrapper
  def initialize(@string)
  end
  forward_missing_to @string
end
wrapper = StringWrapper.new "HELLO"
wrapper.downcase       # => "hello"
wrapper.gsub(/E/, "A") # => "HALLO"Defines getter methods for each of the given arguments.
Writing:
class Person
  getter name
end
Is the same as writing:
class Person
  def name
    @name
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  getter :name, "age"
end
If a type declaration is given, an instance variable with that name is declared with that type.
class Person
  getter name : String
end
Is the same as writing:
class Person
  @name : String
  def name : String
    @name
  end
end
The type declaration can also include an initial value:
class Person
  getter name : String = "John Doe"
end
Is the same as writing:
class Person
  @name : String = "John Doe"
  def name : String
    @name
  end
end
An assignment can be passed too, but in this case the type of the instance variable must be easily inferrable from the initial value:
class Person
  getter name = "John Doe"
end
Is the same as writing:
class Person
  @name = "John Doe"
  def name : String
    @name
  end
endDefines raise-on-nil and nilable getter methods for each of the given arguments.
Writing:
class Person
  getter! name
end
Is the same as writing:
class Person
  def name?
    @name
  end
  def name
    @name.not_nil!
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  getter! :name, "age"
end
If a type declaration is given, an instance variable with that name is declared with that type, as nilable.
class Person
  getter! name : String
end
is the same as writing:
class Person
  @name : String?
  def name?
    @name
  end
  def name
    @name.not_nil!
  end
endDefines query getter methods for each of the given arguments.
Writing:
class Person
  getter? happy
end
Is the same as writing:
class Person
  def happy?
    @happy
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  getter? :happy, "famous"
end
If a type declaration is given, an instance variable with that name is declared with that type.
class Person
  getter? happy : Bool
end
is the same as writing:
class Person
  @happy : Bool
  def happy? : Bool
    @happy
  end
end
The type declaration can also include an initial value:
class Person
  getter? happy : Bool = true
end
Is the same as writing:
class Person
  @happy : Bool = true
  def happy? : Bool
    @happy
  end
end
An assignment can be passed too, but in this case the type of the instance variable must be easily inferrable from the initial value:
class Person
  getter? happy = true
end
Is the same as writing:
class Person
  @happy = true
  def happy?
    @happy
  end
endDefines property methods for each of the given arguments.
Writing:
class Person
  property name
end
Is the same as writing:
class Person
  def name=(@name)
  end
  def name
    @name
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  property :name, "age"
end
If a type declaration is given, an instance variable with that name is declared with that type.
class Person
  property name : String
end
Is the same as writing:
class Person
  @name : String
  def name=(@name)
  end
  def name
    @name
  end
end
The type declaration can also include an initial value:
class Person
  property name : String = "John Doe"
end
Is the same as writing:
class Person
  @name : String = "John Doe"
  def name=(@name : String)
  end
  def name
    @name
  end
end
An assignment can be passed too, but in this case the type of the instance variable must be easily inferrable from the initial value:
class Person
  property name = "John Doe"
end
Is the same as writing:
class Person
  @name = "John Doe"
  def name=(@name : String)
  end
  def name
    @name
  end
endDefines raise-on-nil property methods for each of the given arguments.
Writing:
class Person
  property! name
end
Is the same as writing:
class Person
  def name=(@name)
  end
  def name?
    @name
  end
  def name
    @name.not_nil!
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  property! :name, "age"
end
If a type declaration is given, an instance variable with that name is declared with that type, as nilable.
class Person
  property! name : String
end
Is the same as writing:
class Person
  @name : String?
  def name=(@name)
  end
  def name?
    @name
  end
  def name
    @name.not_nil!
  end
endDefines query property methods for each of the given arguments.
Writing:
class Person
  property? happy
end
Is the same as writing:
class Person
  def happy=(@happy)
  end
  def happy?
    @happy
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  property? :happy, "famous"
end
If a type declaration is given, an instance variable with that name is declared with that type.
class Person
  property? happy : Bool
end
Is the same as writing:
class Person
  @happy : Bool
  def happy=(@happy)
  end
  def happy?
    @happy
  end
  def happy
    @happy.not_nil!
  end
end
The type declaration can also include an initial value:
class Person
  property? happy : Bool = true
end
Is the same as writing:
class Person
  @happy : Bool = true
  def happy=(@happy : Bool)
  end
  def happy? : Bool
    @happy
  end
end
An assignment can be passed too, but in this case the type of the instance variable must be easily inferrable from the initial value:
class Person
  property? happy = true
end
Is the same as writing:
class Person
  @happy = true
  def happy=(@happy)
  end
  def happy?
    @happy
  end
endDefines setter methods for each of the given arguments.
Writing:
class Person
  setter name
end
Is the same as writing:
class Person
  def name=(@name)
  end
end
The arguments can be string literals, symbol literals or plain names:
class Person
  setter :name, "age"
end
If a type declaration is given, an instance variable with that name is declared with that type.
class Person
  setter name : String
end
is the same as writing:
class Person
  @name : String
  def name=(@name : String)
  end
end
The type declaration can also include an initial value:
class Person
  setter name : String = "John Doe"
end
Is the same as writing:
class Person
  @name : String = "John Doe"
  def name=(@name : String)
  end
end
An assignment can be passed too, but in this case the type of the instance variable must be easily inferrable from the initial value:
class Person
  setter name = "John Doe"
end
Is the same as writing:
class Person
  @name = "John Doe"
  def name=(@name)
  end
end