abstract class Class
Defined in:
class.crClass Method Summary
- .==(other : Class)
- .===(other)
-
.cast(other) : self
Casts
other
to this class. - .from_json(string_or_io) : 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
self
andother
.
Instance Method Summary
- #==(other : Class)
- #===(other)
-
#cast(other) : self
Casts
other
to this class. - #from_json(string_or_io) : 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
self
andother
.
Macro Summary
-
def_equals(*fields)
Defines an
#==
method by comparing the given fields. - def_equals_and_hash(*fields)
-
def_hash(*fields)
Defines a
#hash
method computed from the given fields. -
delegate(method, required, *others)
Delegate method to to_object.
-
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)
==
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other)===(other : YAML::Any)
===(other : JSON::Any) ===, =~(other) =~, class class, clone clone, crystal_type_id crystal_type_id, dup dup, hash hash, inspect
inspect(io : IO) 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(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
==(other : Class)
==,
===(other)
===,
cast(other) : self
cast,
from_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)) # => Int32
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)) # => Int32
Macro Detail
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
end
Defines #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
end
Defines 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
end
Delegate method to to_object.
Syntax is: delegate method1, [method2, ..., ], to_object
Note that due to current language limitations this is only useful when no blocks are involved.
class StringWrapper
def initialize(@string)
end
delegate downcase, @string
delegate gsub, @string
delegate empty?, capitalize, @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
@name
end
end
Defines 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
end
Defines 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?
@happy
end
end
Defines 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
Defines 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
end
Defines 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
Defines 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)
end
end