eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingMakra higieniczne w jezyku SchemeRe: Makra higieniczne w jezyku Scheme
  • Data: 2014-11-12 11:19:16
    Temat: Re: Makra higieniczne w jezyku Scheme
    Od: g...@g...com szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu środa, 12 listopada 2014 11:00:53 UTC+1 użytkownik firr napisał:

    > jawaskrypt ciekawy jezyk, nieststy ciagle nie mam sily sie go nauczyc, tylko czasem
    wpadaja mi w oko kwiatki ktore rozumiem albo ktorych nie rozumiem
    >
    > mialbys moze chwile by wyjasnic mi co tutaj sie
    > przykladowo dzieje
    >
    > io.sockets.on("connection", function (socket) {
    > socket.unit = null;
    > socket.on("connectServer", function (data, reply) {
    > var unit = new IB.Player(data);
    >
    > worldHandler.addUnit(unit);
    > }
    > });
    >
    > mniej chodzi mi o sementyke ale o skladnie
    > co to jest? cialo funkcji przekazywane jako argument? a dalej w srodku z tym
    socket.on to samo? sa to po prostu skrotowe zapisy by nie pisac 3 cial funkcji w
    trzech miejscach czy cos wiecej?

    jest mniej wiecej tak jak mowisz. (jednak zamiast powiedziec, ze "cialo funkcji
    jest przekazywane jako argument", raczej bym powiedzial, ze "funkcja jest
    przekazywana jako argument")
    zgodnie z oczekiwaniem, moglbys alterniatywnie zapisac:

    function connectServerHandler(data, reply) {
    var unit = new IB.Player(data);
    worldHandler.addUnit(unit);
    }

    function connectionHandler(socket) {
    socket.unit = null;
    socket.on("connectServer", connectServerHandler);
    }

    io.sockets.on("connection", connectionHandler);

    nie ma duzej roznicy pomiedzy takim kodem, a np. kodem w C
    przekazujacym wskazniki do funkcji.

    w ogolnosci jednak sila ekspresji javascriptu jest wieksza,
    niz sila ekspresji C, poniewaz mozesz w js tworzyc tzw. "domkniecia"
    ("closures"), czyli funkcje ktore przechowuja swoje lokalne srodowisko.
    klasyczny przyklad wyglada tak:

    function make_counter() {
    var counter = 0;
    return function() { return ++counter; }
    }

    var c = make_counter();

    print c(); // 1
    print c(); // 2
    print c(); // 3

    w C mozesz oczywiscie uzyskac funkcjonalnie podobny efekt, przekazujac
    do funkcji osobna strukture (wiele bibliotek ma takie interfejsy, ze
    pobieraja wskaznik na funkcje i wskaznik void *, ktory funkcja
    ma sobie sama rzutowac do odpowiedniego typu)

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: