Struct pass-by-value
For immutable structs this is not relevant but when the struct is mutable you have to remember that it is passed by value to functions. That is, the function receives a copy of the external struct. Any changes made to the struct inside the function will be lost when you leave the function.
struct Person
property name : String
property email : String
def initialize(@name, @email)
end
end
def set_email(pers : Person)
pers.email = "fake@address.com"
p! pers
end
prs = Person.new("Foo", "me@foo.bar")
p! prs
p! prs.name
p! prs.email
puts ""
set_email(prs)
puts ""
p! prs
p! prs.name
p! prs.email
prs # => Person(@name="Foo", @email="me@foo.bar")
prs.name # => "Foo"
prs.email # => "me@foo.bar"
pers # => Person(@name="Foo", @email="fake@address.com")
prs # => Person(@name="Foo", @email="me@foo.bar")
prs.name # => "Foo"
prs.email # => "me@foo.bar"