On Mon, February 21, 2005 10:17 pm, Panagiotis Karvounis said:
> What about this one?
>
> For your help Greek words translation:
>
>
> ypoxrewsi=duty
> topos=place
> diarkeia=duration
> skopos=subject
> hmera=day(date)
> wra=time
> emfanisi=print
>
> Thanks so much for helping me.
>
>
>
> On Tue, 22 Feb 2005 07:08:44 +0900, Austin Ziegler <halostatue@gmail.com>
> wrote:
>> On Tue, 22 Feb 2005 07:01:59 +0900, Panagiotis Karvounis
>> <pkarvou@gmail.com> wrote:
>> > I am not trying sth special.I am testing language features that I
>> > use with Java.
>> >
>> > I was trying to use initialize more than once (think Java-default
>> > constructor, other with one argument etc...)
>> >
>> > Example with Java:
>> >
>> > public class Rectangle
>> > {
>> > public int a,b;
>> > public Rectangle()
>> > {
>> > a=0;
>> > b=0;
>> > }
>> > public Rectangle(int c,int d)
>> > {
>> > a=c;
>> > b=d;
>> > }
>> > }
>>
>> > So I tried:
>> > class Rectangle
>> > def initialize
>> > @a=0
>> > @b=0
>> > end
>> >
>> > def initialize(c,d)
>> > @a=c
>> > @b=d
>> > end
>> > end
>>
>> class Rectangle
>> def initialize(a = 0, b = 0)
>> @a = a
>> @b = b
>> end
>> end
>>
>> That will work very well for you.
>>
>> You can do any number of other things like this that I find work as
>> well or better than actual argument overloading, mostly because Ruby
>> is dynamically typed.
What I would do is just use 'one' constructor,
def initialize(topos, diarkeia, skopos, hmera, wra)
@topos, @diarkeia, @skopos = topos, diarkeia, skopos
@hmera, @wra = hmera, wra
end
and do this:
e = Ypoxrewsi.new("Spiti", 1, "Ruby", Pdate.new(21,2,2005), Ptime.new(18,2))
a = Pdate.new(21,2,2005)
b = Ptime.new(18,2)
f = Ypoxrewsi.new("Spiti", 1, "Ruby", a, b)
You could also use named arguments like this:
require "TimeDateTools"
include MyTools
class Ypoxrewsi
def initialize(topos, diarkeia, skopos, hsh)
# Normal assignments, always present
@topos, @diarkeia, @skopos = topos, diarkeia, skopos
# Extract the rest from hash (assumes all necessary are given).
if hsh.has_key? :hmera
@hmera, @wra = hsh[:hmera], hsh[:wra]
else
@hmera = Pdate.new(hsh[:day], hsh[:month], hsh[:year])
@wra = Ptime.new(hsh[:hour], hsh[:minute])
end
end
# ...
end
c = Ypaxrewsi.new("Livadeia", 2, "Syskepsi",
:day => 25, :month => 8, :year => 1983,
:hour => 19, :minute => 30)
c.emfanisi
a = Pdate.new(21,2,2005)
b = Ptime.new(18,2)
d = Ypoxrewsi.new("Spiti", 1,"Ruby",
:hmera => a, :wra => b)
d.emfanisi
>> -austin
>> --
>> Austin Ziegler * halostatue@gmail.com
>> * Alternate: austin@halostatue.ca
E