Types
In Sidef, a new type can be declared as a class and its name can be used in function or method parameters to provide dynamic type checking:
class Point(Number x, Number y) {
method to_s { "Point(#{x}, #{y})" } # auto-stringification
}
func foo(Point p) {
say p
}
foo(Point(5, 6))
A type can be veryfied by using the .kind_of(TYPE)
method, which is defined inside the Object
class, which is the parent of all classes (including user-defined classes):
say "foo".kind_of(String) #=> true
say "bar".kind_of(Number) #=> false
The type of an object can be found usind the following two methods (which are also defined inside the Object
class):
say "foo".ref #=> Sidef::Types::String::String
say "foo".class #=> String