Hey there, Remco.  Double-posting is not necessary to get a response,
things tend to get answered within a day or so, often much sooner.

To create an object type in Julia, you can take a look at the documentation
for defining composite
types<http://julia.readthedocs.org/en/latest/manual/types/#composite-types>,
your "lastname" and "firstname" member variables can be declared as part of
a Person object like so:

*type Person*
*    firstname*
*    lastname*
*end*

If you want to force firstname and lastname to be strings, you can do so
with type annotations, as shown in the composite types link above

To define functionality, Julia does not have member functions like many
other OOP languages.  Instead, everything is done through multiple
dispatch, essentially you would define a method called "fullname" that
takes in a variable of type Person:

*fullname(p::Person) = string(p.firstname, " ", p.lastname)*

I suggest you read through the
methods<http://julia.readthedocs.org/en/latest/manual/methods/>
section
of the manual for more on this.  Note that since you're used to Ruby, you
might find it more convenient to use string interpolation instead of the
string constructor, both are equivalent, although using the string
constructor directly is more performant:

*fullname(p::Person) = "$(p.firstname) $(p.lastname)"*

Finally, to construct a person object, each type defined in Julia is given
a default constructor, so you can use that and initialize all fields
immediately:

*p = Person("john", "smith")*

If you want to define your own constructors, I suggest you read the
constructors
section <http://julia.readthedocs.org/en/latest/manual/constructors/> of
the manual.
-E


On Sat, May 24, 2014 at 11:10 AM, Remco <[email protected]> wrote:

> Hi, I am new to julia and i am not sure how to do this in julia:
>
>
> class Person
>     attr_accessor :lastname, :firstname
>
>     def fullname
>         "#{firstname} #{lastname}"
>     end
> end
>
> jan = Person.new
> jan.firstname = "Jan"
> jan.lastname = "Janssen"
>
> puts jan.fullname
>
>
> Regards, Remco
>

Reply via email to