Zdar, budu mít trochu abstraktnější dotaz.
Metodám třídy LINQ se předávají jako parametry metody, jsou to vlatně lambda výrazy. To chápu, chápu i jak daná metoda může vycucnout z daného lambda výrazu všechny informace co potřebuje.
Jde mi o to jestli je metodový parametr použit ještě někde jinde. Či jestli může sám programátor napsat takovou metodu.
Další věc která mě zajímá, jak taková metoda přímo pracuje s daným parametrem. Ví že má z dané enuerovatelné kolekce vybrat např. všechny metody které se nějak jmenují. Používá proto zástupné jméno. To chápu, ale není to někde rozvedené více do hloubky? Jednoduše chápu že to funguje, chápu jak to použít ale vnitřní niance mi jasné nejsou.
//Doufám že je můj dotaz alespoň trochu pochopitelný.
Fórum › .NET
LINQ & Parametrem lambda výraz
tie linq dotazy sú vlastne ExtensionMethods daného typu (čiže čo dedí od IEnumerable napr.)
Stačí si vziať hocijakú už hotovú metodu a pozrieť si ju:
public static decimal Sum<TSource>(
this IEnumerable<TSource> source,
Func<TSource, decimal> selector);
číže daný lamba výraz je predávaný ako tá Func<TSource, decimal>, ono vlastne tieto lambdavýrazy boli zavedené kvôli linq aby sa dal písať "jednoduhcšie vypadajúci" kod.
A samozrejme, Ty si vieš napísať svoju ExtensionMethod, ktorá bude robiť presne to, čo chceš od nej. Napr. ja som si minule zapodieval smerodajnou odchýlkou, jednoducho som si zvolil názov, dal ako ExtensionMethod of this IEnumerable a potom Func som dal aby mi vybralo double, následne si spísal ako to má vlastne počítať (známy algoritmus je na to...) a potom sa mi už pri kolekciach čo majú implementované IEnumerable zjavila "za bodkou"
Děkuji, ale leč jsou moje schopnosti angličtiny dle mého názoru na to že se učím dva roky poměrně obstojné, tak na čtení poměrně technické knihy to zatím není.
EDIT: Chápu jak fungují rozšířené metody. Jde mi o to jak je z labda výrazu vycucnuto "Func<TSource, decimal>".
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 13 hostů
Podobná vlákna
Lambda vyraz — založil Pavel
AJAX & PHP & MySQL vložení záznamu — založil JMM
Odebrání lambda funkce z pole — založil ingiraxo
ERROR <LAMBDA>0 TAKES EXACTLY 3 ARGUMENTS (2 GIVEN) — založil limama
C# volání konstruktoru přes lambda expression — založil Kartmen
Moderátoři diskuze