eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJakie typowanie jest najlepsze i dlaczego statyczne?Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
  • Data: 2013-02-07 02:09:28
    Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
    Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 07/02/2013 00:36, M.M. wrote:
    > W dniu czwartek, 7 lutego 2013 01:12:47 UTC+1 użytkownik Andrzej Jarzabek napisał:
    >> No ale nie możesz w ten sposób wstawić dowolnej struktury czy mapy.
    > Jak na razie wstawiam dowolne potrzebne.
    >
    >> Możesz przypisać boost::function<int(int)>?
    > Czy to na pewno jest potrzebne, albo chociaż zapewnia w jakimś
    > przypadku wygodę?

    A więc nie moższ.

    >> Nie ma tej wygody, bo na zmiennej typu Variant możesz wywoływać tylko
    >> mettody typu Variant - czyli żadnych użytecznych dla danych, na których
    >> faktycznie chcesz wykonywać jakieś operacje.
    > Nie wiem o jaką użyteczność chodzi, ale może to by załatwiała metoda
    > wirtualna?

    Variant policz_cene(Variant transakcja)
    {
    return transakcja.kwota * kurs_walut(transkacja.waluta,
    moja_waluta);
    }

    W tym momencie piszę algorytm liczący kwotę, jakimi typami są
    transakcje, kwoty i waluty jeszcze nie zdecydowałem, zresztą mogę to
    wiele razy refaktoryzować. Może transakcja będzie konstruowana z
    elementu XML, który ma podelementy 'kwota' i 'waluta'.

    >> Żeby zrobić coś więcej
    >> musisz sobie przerzutować, a żeby przerzutować musisz dokładnie
    >> wiedzieć, na co chcesz rzutować.
    > Nie trzeba wiedzieć aż tak dokładnie, wystarczy rzutować na klasę z
    > czystą metodą wirtualną, zwykle na tą najwyższą w hierarchii dziedziczenia.

    Wystarczy, żeby powodować niewygodę. Bo tak czy inaczej musisz w tym
    momencie zdefiniować odpowiednie typy.

    >> Nie możesz mieć tego samego kodu, który zadziała zarówno na hashmapie z
    >> elementem o nazwie 'pole' jak i na obiekcie typu (klasy) mającego pole o
    >> nazwie 'pole'.
    > O jakie różnice chodzi?

    struct A
    {
    def pole
    def polozenie
    [...]
    }

    struct B
    {
    def pole = 0
    }

    var c = parse_xml('<root><pole>31</pole></root>')

    fun foo(p)
    {
    return (p.pole)/2
    }

    foo(new A)
    foo(new B)
    foo(c)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: