Struct is a new type for defining custom types by combining inbuilt native types.
This is also called Records or composite type in other programming language
How to define struct in Julia
Struct is a keyword used to define a new types.
Syntax:
struct NewType
property1
property2::datatype
property3::datatype
end
NewType is a custom datatype that holds multiple properties.
Properties declared with either datatype or without datatype(Any).
property1 is of Any
type.
::
operators assigns type to an variable or expression
Once new type is created, We can create an object using constructor.
variable = NewType(value1,value2,value3)
struct Employee
id::Int64
name::string
end
variable = Employee(3, "john")
println(variable)
Output
Employee(3, "john")
properties can be accessed using variable.property
syntax
variable = Employee(3, "john")
println(variable.id) # 3
println(variable.name) # john
How to do you change the values of an struct object.
struct Employee
id::Int64
name::String
end
variable = Employee(3, "john")
println(variable)
variable.name="ram"
println(variable)
It throws an error ERROR: LoadError: setfield!: immutable struct of type Employee cannot be changed
Employee(3, "john")
ERROR: LoadError: setfield!: immutable struct of type Employee cannot be changed
Stacktrace:
[1] setproperty!(x::Employee, f::Symbol, v::String)
@ Base ./Base.jl:39
[2] top-level scope
@ ~/SevereGrimyExpertise/main.jl:9
in expression starting at /home/runner/SevereGrimyExpertise/main.jl:9
by default struct types are immutable. You can not change its value.
Then, How do you declare mutable struct
declare struct
using mutable
keyword
mutable struct type example:
mutable struct Employee
id::Int64
name::String
end
variable = Employee(3, "john")
println(variable)
variable.name="ram"
println(variable)
Output:
Employee(3, "john")
Employee(3, "ram")
How to pass Struct type to functions
Function contains a struct as an argument
It contains arguments with ::
operator
mutable struct Employee
id::Int64
name::String
end
variable = Employee(3, "john")
function print(e::Employee)
println(e.id)
println(e.name)
end
print(variable)