Article View: alt.pl.comp.lang.csharp
Article #22360Re: Ksišżka do C#
From: Maciej Pilichowski
Date: Fri, 02 Mar 2012 06:44
Date: Fri, 02 Mar 2012 06:44
61 lines
2971 bytes
2971 bytes
On Thu, 01 Mar 2012 14:02:54 +0100, saper/nolin11
<nolinno11_usun_to@gmail.com> wrote:
>Tak więc coś tam wiem ale pewnie jeszcze więcej nie wiem ;) i chciałem
>się doszkolić... Jakieś polecane pozycje?
Hmm, normalnie zawsze odpowiadam "przeczytaj ksiazke X", ale tym razem
powiem cos dokladnie odwrotnego -- do samego Linq wg mnie raczej nie
warto, znajdziesz dobre rzeczy na sieci.
Linq to wiele rzeczy w jednym, ale pokrotce (moimi slowami) w C# masz
mozliwosc zapisywania bardzo zgrabnego lamdb (duzo ladniej niz w C++
swego czasu). Lambda = (tez pokrotce) to po prostu funkcja anonimowa,
ktora podajesz jako parametr do innej funkcji.
Popatrz np. na PHP-a, zeby wykonac trima na kazdym elemencie tablicy
piszesz:
array_map('trim',moja_tablica);
kupy sie to nie trzyma, bo funkcja (trim) jest przekazywana jako
tekst. Tymczasem Linq wykorzystuje wlasnie sile lamdb i "standaryzuje"
(moca niepisanej umowy) takie operacje jak:
* przeksztalc wszystkie elementy (select)
* odfiltruj elementy (where)
* podajsz pierwszy element (first)
* ostatni (last)
* policz elementy (count)
* posumuj elementy (sum)
itd. itd.
I tak dla tego trima w C# piszesz:
moja_tablica.Select(element => element.trim());
nie ma tu zadnych tekstow, wszystko jest sprawdzane w czasie
kompilacji. Typ elementu jest dedukowany na podstawie typu tablicy,
wiec nie ma go potrzeby podawac, ale jesli jest potrzeba (nieraz sie
zdarza), to piszesz:
moja_tablica.Select(string element => element.trim());
Ok, tyle porannych madrosci, reszte wygooglujesz, ale jesli
zrozumiales to co powyzej, to nawet i nie musisz, napisz w samym Linq
odczytywanie tekstow z pliku z takim operacjami:
* daj trim na kazdym wierszu
* przepusc tylko wiersze niepuste
* podziel wiersz na spacjach
* wez ostatni kawalek
* przeksztalc go do wielkich liter
--> i to bedzie wynikiem czytania
wszystko to powyzej daj jako jedno polecenie (function chaining).
milego dnia, hej
--
Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
http://garaz.pl.hostingasp.pl/
Technical Details
Message-ID:
<4jq0l75dtt2s84k9niuvjn75p6pjqvn9nv@4ax.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!opal.futuro.pl!news.internetia.pl!not-for-mailReferences:
<jins7d$9h7$1@news.dialog.net.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!opal.futuro.pl!news.internetia.pl!not-for-mail From: Maciej Pilichowski <Pilichowski.MaciejSkasujTo@gmail.com> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: Ksišżka do C# Date: Fri, 02 Mar 2012 07:44:20 +0100 Organization: Netia S.A. Lines: 61 Message-ID: <4jq0l75dtt2s84k9niuvjn75p6pjqvn9nv@4ax.com> References: <jins7d$9h7$1@news.dialog.net.pl> NNTP-Posting-Host: 77-252-236-60.ip.netia.com.pl Mime-Version: 1.0 X-Trace: mx1.internetia.pl 1330670696 10086 77.252.236.60 (2 Mar 2012 06:44:56 GMT) X-Complaints-To: abuse@inetia.pl NNTP-Posting-Date: Fri, 2 Mar 2012 06:44:56 +0000 (UTC) X-Tech-Contact: usenet@internetia.pl X-Newsreader: Forte Agent 1.93/32.576 English (American) X-Server-Info: http://www.internetia.pl/ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit