Two categories of types available in
Julia.
a. Concrete types
b. Abstract types
Concrete
types
You can create concrete types using the keyword ‘type’. You can instantiate concrete types.
You can create concrete types using the keyword ‘type’. You can instantiate concrete types.
julia> type Employee firstName::ASCIIString lastName::ASCIIString id::Int64 end julia> julia> emp1=Employee("PTR", "Nayan", 1) Employee("PTR","Nayan",1)
When a type is applied like a function
it is called a constructor. Employee("PTR", "Nayan", 1) is
a constructor for the type Employee. By default, Julia creates a constructor
for user defined types.
Abstract
types
You can create abstract types using the keyword ‘abstract’. You can’t create an object for abstract types. Abstract types are final by default, so you can’t create subtypes to an abstract type.
You can create abstract types using the keyword ‘abstract’. You can’t create an object for abstract types. Abstract types are final by default, so you can’t create subtypes to an abstract type.
julia> abstract Student julia> stud1=Student() ERROR: MethodError: `convert` has no method matching convert(::Type{Student}) This may have arisen from a call to the constructor Student(...), since type constructors fall back to convert methods. Closest candidates are: convert{T}(::Type{T}, ::T) call{T}(::Type{T}, ::Any) in call at essentials.jl:57
Creating
subtypes
By using <: (is a subtype of)
operator, you can create a sub type for an abstract type.
For example,
julia> abstract Employee julia> type permEmployee <: Employee firstName::ASCIIString lastName::ASCIIString id::Int64 end julia> type tempEmployee <: Employee firstName::ASCIIString lastName::ASCIIString id::Int64 noticePeroid::Int8 end julia> emp1 = permEmployee("Hari", "Krishna", 1) permEmployee("Hari","Krishna",1) julia> emp2 = tempEmployee("Hari", "Krishna", 1, 30) tempEmployee("Hari","Krishna",1,30) You can’t create a sub type for a concrete type. julia> type SeniorEmployee <: tempEmployee name::ASCIIString end ERROR: invalid subtyping in definition of SeniorEmployee
You can use the operator <: in
expressions. It returns true when its left operand is a subtype of its right
operand.
julia> tempEmployee <: Employee true julia> permEmployee <: Employee true julia> Employee <: tempEmployee false julia> Integer <: Number true julia> Integer <: AbstractFloat false
No comments:
Post a Comment