eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingMakra higieniczne w jezyku SchemeRe: Makra higieniczne w jezyku Scheme
  • X-Received: by 10.140.92.140 with SMTP id b12mr17000qge.14.1415787556504; Wed, 12 Nov
    2014 02:19:16 -0800 (PST)
    X-Received: by 10.140.92.140 with SMTP id b12mr17000qge.14.1415787556504; Wed, 12 Nov
    2014 02:19:16 -0800 (PST)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin1!goblin3!goblin.stu.neva.ru!news.ripco.com!news.glorb.com!hl2no
    394387igb.0!news-out.google.com!u1ni9qah.0!nntp.google.com!u7no1041664qaz.1!pos
    tnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 12 Nov 2014 02:19:16 -0800 (PST)
    In-Reply-To: <7...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.78.6;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 46.186.78.6
    References: <5...@g...com>
    <a...@4...com>
    <6...@g...com>
    <7...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <2...@g...com>
    Subject: Re: Makra higieniczne w jezyku Scheme
    From: g...@g...com
    Injection-Date: Wed, 12 Nov 2014 10:19:16 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:206937
    [ ukryj 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: