using System;
//preko lambdi napraviti program koji vraca proizvod dva broja
//lambda je funkcija koja moze da se prosledjuje i ima svoj tip!!!
public class Primer{
public static decimal Test(Func<decimal, decimal> duplo){
decimal broj = 6.1m; //m zbog decimal
decimal rezultat = duplo(broj);
Console.WriteLine("Broj je: " + broj);
return rezultat;
}
public static void Main(){
Func<decimal,decimal> duplo = a => {
decimal broj = 2*a;
return broj;
};
Console.WriteLine("Duplo: " + Test(duplo));
//public class Program
//{
// public static void Main()
//ovde pravimo lambdu:
/*PRVI PRIMER*/
//Action hello = () => Console.WriteLine("Hello!"); //definicija lambde. Action je delegat za visekratnu upotrebu(?). () je prazna lista parametara. Deo posle '=>' je telo lambde.
//hello();
/*DRUGI PRIMER*/
// Predicate<string> validator = //Predicate je delegat koji vraca bool vrednost
// word => //prosledjeni parametar je word tipa string
// {
// int count = word.Length;
// return count > 3; //vraca true ako rec ima vise od 3 slova
// };
// ValidateInput(validator);
// ValidateInput(word => //isto kao i prethodno samo sto je sad lambda definisana u listi arg.
// return count > 3;
// });
// }
// public static void ValidateInput (Predicate<string> validator){ //u ovoj fji se poziva lambda
// string input = "Hello";
// bool isValid = validator(input); //sada pozivamo prosledjeni delegat
// Console.WriteLine("Is valid: " + isValid);
//}