z1 = Complex:new(1, 2)je vlastně totéž, co
z1 = Complex.new(Complex, 1, 2)
s tím, že ten "neviditelný" Complex v arglistu se na "volané" straně ignoruje. V zásadě je možné deklarovat funkci pomocí tečky a přitom ji volat pomocí dvojtečky i naopak, ale k čitelnosti by něco takového pochopitelně asi neprospělo.
Je úplně jedno, jestli ji vytvořím ve tvaru Complex:new(real, imag)
a volám z=Complex:new(1, 2)
nebo ji jestli vytvořím ve tvaru Complex.new(real, imag)
a volám z=Complex.new(1, 2)
.
Osobně bych tady samozřejmě preferoval tečku, už jako takové "nakopnutí", ale funkční je oboje.