c-sharp lambda ekspressionit

Anonyymi

hei.

olenko tyhmä vai onko tämä asia tarkoitettu vain sille prosentille älykkäimmistä ihmisistä? oon yrittänyt ymmärtää näitä "lambda expression" muotoja mutta en millään pääse niistä jyvälläe! oon kyl koodaillu jo vuosia c#:llä ja perusjutut menevät mutta tuo ei kertakaikkiaan aukea. onko jotain ***suomenkielistä*** hyvää tutoriaalia, että hiffais idean??

22

1058

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Pistä hakuun:
      lambda expression

      ja asenna selaimeen kääntäjä jos enkku ei taivu.

      • Anonyymi

        avaaja nyt ainakaan niitä älykkäimpiä ole


    • Anonyymi

      Ainakin Jyväskylän yliopiston IT-tiedekunnan tekemänä löytyy tuostakin ihan hyviä videoita. Ihan kaikkea ei taida löytyä julkisessa jaossa, mutta paljon niitä on myös YouTubessa kaikkien saatavilla.

      Jos et ymmärrä lambda-lausekkeita niin ei siitä kannata kauheasti stressata. En keksi yhtäkään tilannetta, jossa niitä aivan välttämättä tarvittaisiin, ja silloinkin kun niitä on ihan näppärää käyttää, se ei välttämättä kannata, koska toteutuksen miettimiseen menee enemmän aikaa ja koodistasi tulee vaikeammin ylläpidettävää.
      Itse olen päätynyt ehkä 5 kertaa käyttämään lambdalausekkeita johonkin toteutukseen ja kerran tai korkeintaan kahdesti se on osoittautunut hyväksi ideaksi. Melkein aina on nopeampaa ja helpompaa toteuttaa kaikki ilman lambdoja.

      Ohjelmointi 2 -kurssilla assari kiteytti asian mielestäni varsin hyvin:
      Fiksut käyttävät lambda-lausekkeita, mutta vielä fiksummat eivät käytä.

      • Anonyymi

        " ja silloinkin kun niitä on ihan näppärää käyttää, se ei välttämättä kannata, koska toteutuksen miettimiseen menee enemmän aikaa ja koodistasi tulee vaikeammin ylläpidettävää."

        Siis mitä ihmettä sä oikein höpiset? Lambdoja paljon helpompi lukea ja koodistakin tulee kompaktimpaa. Esimerkkinä vaikkapa IEnumerable laajennukset tai Entity framework:in kantakyselyt....


      • Anonyymi
        Anonyymi kirjoitti:

        " ja silloinkin kun niitä on ihan näppärää käyttää, se ei välttämättä kannata, koska toteutuksen miettimiseen menee enemmän aikaa ja koodistasi tulee vaikeammin ylläpidettävää."

        Siis mitä ihmettä sä oikein höpiset? Lambdoja paljon helpompi lukea ja koodistakin tulee kompaktimpaa. Esimerkkinä vaikkapa IEnumerable laajennukset tai Entity framework:in kantakyselyt....

        Lambda vie tyypillisesti vähemmän merkkejä, mutta ei se kyllä helpompi lukea ole. Toki jos on tottunut lambdojen käyttäjä niin se voi olla sinulle yhtä selkeä, mutta hyvin ylläpidettävä koodi on sellaista, johon joku muukin osaa tehdä tarvittavat muutokset ilman merkittävää riskiä asioiden rikkoutumisesta. Tosiasia on, että lambdoja tarvitaan niin harvoin, ettei hyväkään koodari totu niihin ellei tietoisesti harrasta niitä jatkuvasti myös silloin kun olisi helpompaa tehdä sama ilman.


      • Anonyymi kirjoitti:

        Lambda vie tyypillisesti vähemmän merkkejä, mutta ei se kyllä helpompi lukea ole. Toki jos on tottunut lambdojen käyttäjä niin se voi olla sinulle yhtä selkeä, mutta hyvin ylläpidettävä koodi on sellaista, johon joku muukin osaa tehdä tarvittavat muutokset ilman merkittävää riskiä asioiden rikkoutumisesta. Tosiasia on, että lambdoja tarvitaan niin harvoin, ettei hyväkään koodari totu niihin ellei tietoisesti harrasta niitä jatkuvasti myös silloin kun olisi helpompaa tehdä sama ilman.

        "mutta hyvin ylläpidettävä koodi on sellaista, johon joku muukin osaa tehdä tarvittavat muutokset ilman merkittävää riskiä asioiden rikkoutumisesta."

        Täyttä saissee!! Lambdat ovat erittäin yleisiä C#:ssa eikä kyllä millään lailla ole vaikeampia ylläpidettäviä. Jos meinaa saada töitä C# koodarina niin suosittelen kyllä opettelemaan lambdat oikein hyvin!

        "Tosiasia on, että lambdoja tarvitaan niin harvoin, ettei hyväkään koodari totu niihin ellei tietoisesti harrasta niitä jatkuvasti myös silloin kun olisi helpompaa tehdä sama ilman."

        Ajaa. Kumpi näyttää selkeämältä ja on helpompi kirjoittaa?? :)

        public class Foo
        {
        public string bar;
        public Foo(string bar)
        {
        this.bar = bar;
        }
        }

        class Program
        {
        static void Main(string[] args)
        {
        var list = new List<Foo>()
        {
        new Foo("bar1"),
        new Foo("bar2"),
        new Foo("bar3")
        };

        // Lambda (1 rivi)
        var bar1 = list.FirstOrDefault(foo => foo.bar == "bar1");

        // Perinteinen tapa (8 RIVIÄ!!!)
        foreach (var foo in list)
        {
        if (foo.bar == "bar1")
        {
        bar1 = foo;
        break;
        }
        }
        }
        }


      • Anonyymi
        code_red kirjoitti:

        "mutta hyvin ylläpidettävä koodi on sellaista, johon joku muukin osaa tehdä tarvittavat muutokset ilman merkittävää riskiä asioiden rikkoutumisesta."

        Täyttä saissee!! Lambdat ovat erittäin yleisiä C#:ssa eikä kyllä millään lailla ole vaikeampia ylläpidettäviä. Jos meinaa saada töitä C# koodarina niin suosittelen kyllä opettelemaan lambdat oikein hyvin!

        "Tosiasia on, että lambdoja tarvitaan niin harvoin, ettei hyväkään koodari totu niihin ellei tietoisesti harrasta niitä jatkuvasti myös silloin kun olisi helpompaa tehdä sama ilman."

        Ajaa. Kumpi näyttää selkeämältä ja on helpompi kirjoittaa?? :)

        public class Foo
        {
        public string bar;
        public Foo(string bar)
        {
        this.bar = bar;
        }
        }

        class Program
        {
        static void Main(string[] args)
        {
        var list = new List<Foo>()
        {
        new Foo("bar1"),
        new Foo("bar2"),
        new Foo("bar3")
        };

        // Lambda (1 rivi)
        var bar1 = list.FirstOrDefault(foo => foo.bar == "bar1");

        // Perinteinen tapa (8 RIVIÄ!!!)
        foreach (var foo in list)
        {
        if (foo.bar == "bar1")
        {
        bar1 = foo;
        break;
        }
        }
        }
        }

        Jälkimmäinen on selkeämpi. Kuka tahansa osaa lukea sen miettimättä vähääkään. Jälkimmäisestä joutuu erikseen miettimään, mitä siinä tapahtuu, vaikka noin helpossa esimerkissä sekin käy nopeasti jos osaa käyttää lambdoja.


      • Anonyymi
        Anonyymi kirjoitti:

        Jälkimmäinen on selkeämpi. Kuka tahansa osaa lukea sen miettimättä vähääkään. Jälkimmäisestä joutuu erikseen miettimään, mitä siinä tapahtuu, vaikka noin helpossa esimerkissä sekin käy nopeasti jos osaa käyttää lambdoja.

        Korjaan: ensimmäisestä joutuu erikseen miettimään.


      • Anonyymi
        Anonyymi kirjoitti:

        Jälkimmäinen on selkeämpi. Kuka tahansa osaa lukea sen miettimättä vähääkään. Jälkimmäisestä joutuu erikseen miettimään, mitä siinä tapahtuu, vaikka noin helpossa esimerkissä sekin käy nopeasti jos osaa käyttää lambdoja.

        "Kuka tahansa osaa lukea sen miettimättä vähääkään. "

        Ei kuka tahansa, vaa se, joka on OPPINUT koodausta!
        Mutta ok, ihan miten vaan. En jaksa vääntää niinkin yksinkertaisesta asiasta. Lambdan oppiminen ja sisäistäminen on yhtä helppoa kun for loopin oppiminen manuaalia lukemalla. Kielet kehittyy ja niihin lisätään uusia rakenteita. Jotkut muutoksista menestyy, toiset ei ja lambdat ovat erittäin hyvin menestynyt. Kuten sanoin, jos meinaa töitä hakea C# koodarina niin turha edes yrittää, jos ei osaa lambdoja lukea/käyttää koska KAIKKI C# .NET projektit vilisee lambdoja. Kotona voikin sitten koodata miten haluaa. Joten väitteesi, ettei lambdoja käytetä ja ovat hyvin harvinaisia, on täysin väärä!


      • Anonyymi
        Anonyymi kirjoitti:

        Lambda vie tyypillisesti vähemmän merkkejä, mutta ei se kyllä helpompi lukea ole. Toki jos on tottunut lambdojen käyttäjä niin se voi olla sinulle yhtä selkeä, mutta hyvin ylläpidettävä koodi on sellaista, johon joku muukin osaa tehdä tarvittavat muutokset ilman merkittävää riskiä asioiden rikkoutumisesta. Tosiasia on, että lambdoja tarvitaan niin harvoin, ettei hyväkään koodari totu niihin ellei tietoisesti harrasta niitä jatkuvasti myös silloin kun olisi helpompaa tehdä sama ilman.

        Sehän on ohjelmoijan heikkous jos ei ole tottunut.

        Ohjelmointityössä kuitenkin tehdään sitä koodia, ja sen pitää olla mahdollisimman virheetöntä ja siistiä. Tekosyyt sille että ei ole tottunut on aika huonoja.


      • Anonyymi
        code_red kirjoitti:

        "mutta hyvin ylläpidettävä koodi on sellaista, johon joku muukin osaa tehdä tarvittavat muutokset ilman merkittävää riskiä asioiden rikkoutumisesta."

        Täyttä saissee!! Lambdat ovat erittäin yleisiä C#:ssa eikä kyllä millään lailla ole vaikeampia ylläpidettäviä. Jos meinaa saada töitä C# koodarina niin suosittelen kyllä opettelemaan lambdat oikein hyvin!

        "Tosiasia on, että lambdoja tarvitaan niin harvoin, ettei hyväkään koodari totu niihin ellei tietoisesti harrasta niitä jatkuvasti myös silloin kun olisi helpompaa tehdä sama ilman."

        Ajaa. Kumpi näyttää selkeämältä ja on helpompi kirjoittaa?? :)

        public class Foo
        {
        public string bar;
        public Foo(string bar)
        {
        this.bar = bar;
        }
        }

        class Program
        {
        static void Main(string[] args)
        {
        var list = new List<Foo>()
        {
        new Foo("bar1"),
        new Foo("bar2"),
        new Foo("bar3")
        };

        // Lambda (1 rivi)
        var bar1 = list.FirstOrDefault(foo => foo.bar == "bar1");

        // Perinteinen tapa (8 RIVIÄ!!!)
        foreach (var foo in list)
        {
        if (foo.bar == "bar1")
        {
        bar1 = foo;
        break;
        }
        }
        }
        }

        Korjaus: Jos meinaa saada töitä C# koodarina, kannattaa opetella JavaScript hyvin.

        PS. Lambda on lähes suora kopio JavaScriptin arrow-notaatiosta.


      • Anonyymi
        Anonyymi kirjoitti:

        Sehän on ohjelmoijan heikkous jos ei ole tottunut.

        Ohjelmointityössä kuitenkin tehdään sitä koodia, ja sen pitää olla mahdollisimman virheetöntä ja siistiä. Tekosyyt sille että ei ole tottunut on aika huonoja.

        Ei se ole mikään heikkous jos ei ole tottunut käyttämään lambdoja, kunhan niitä ymmärtää sen verran, että tarvittaessa osaa katsoa mitä jonkun muun kirjoittama lambda tekee.


      • Anonyymi
        Anonyymi kirjoitti:

        Korjaus: Jos meinaa saada töitä C# koodarina, kannattaa opetella JavaScript hyvin.

        PS. Lambda on lähes suora kopio JavaScriptin arrow-notaatiosta.

        "Jos meinaa saada töitä C# koodarina, kannattaa opetella JavaScript hyvin."

        Taas täyttä saissee :) :)

        "PS. Lambda on lähes suora kopio JavaScriptin arrow-notaatiosta."

        Ajaa, no javascript arrow notation esiteltiin ES6:ssa vuonna 2015.
        .NET framework:ssa lambdat esiteltiin versiossa 3.5 vuonna 2008 :D :D

        Aika vaikea kopioida....


    • Anonyymi

      Esimerkki Pythonin puolelta vastaavasta:

      sum = lambda x, y: x y; print (sum (1, 2))

      Sama tehtynä perinteisesti def funktiona

      def sum(x,y):
      print(x y)

      sum(1, 2)

      Pakko sanoa että lambda funktiot jää käyttämättä, jos on yhtään vaativampi kyseessä.

      • Anonyymi

        Lisäksi huomioi, merkkejäkin meni samaan perinteisin keinoin vähemmän.


      • Anonyymi

        Ahaa, kyseessä on siis vain samanlainen järjetön sekoilu kuin ns. puolalainen notaatio, jolla vain sotketaan selviä asioita.


      • Anonyymi
        Anonyymi kirjoitti:

        Ahaa, kyseessä on siis vain samanlainen järjetön sekoilu kuin ns. puolalainen notaatio, jolla vain sotketaan selviä asioita.

        Ehkä, ei ole tuttu juttu tuo puolalainen notaatio. Asiat täytyy pitää yksinkertaisina, niin se on helpompaa. Vaihtoehtoiset mallit vain sekoittaa selvän asian.


      • Anonyymi
        Anonyymi kirjoitti:

        Ahaa, kyseessä on siis vain samanlainen järjetön sekoilu kuin ns. puolalainen notaatio, jolla vain sotketaan selviä asioita.

        Kun sum-funktio kirjoitetaan tavallisena funktiona, niin ihan samassa järjestyksessähän se tulee: ensin funktion nimi sitten parametrit. Lambdat ei siis liity puolalaiseen notaatioon mitenkään. Ovat vaan lyhennysmerkintä.


      • Anonyymi
        Anonyymi kirjoitti:

        Kun sum-funktio kirjoitetaan tavallisena funktiona, niin ihan samassa järjestyksessähän se tulee: ensin funktion nimi sitten parametrit. Lambdat ei siis liity puolalaiseen notaatioon mitenkään. Ovat vaan lyhennysmerkintä.

        Tai siis: johan se tavallinenkin funktio on puolalaista notaatiota!


      • Anonyymi
        Anonyymi kirjoitti:

        Ehkä, ei ole tuttu juttu tuo puolalainen notaatio. Asiat täytyy pitää yksinkertaisina, niin se on helpompaa. Vaihtoehtoiset mallit vain sekoittaa selvän asian.

        Sitten kun ymmärrät vielä, että koko ohjelmointi onnistuu puhtaasti lambdalla. Eli kuinka funktionaalisesti saa asian tehtyä, että ei sotke jotain imperatiivisista kielistä lähtöisin olevaa kuraa.


      • Anonyymi
        Anonyymi kirjoitti:

        Sitten kun ymmärrät vielä, että koko ohjelmointi onnistuu puhtaasti lambdalla. Eli kuinka funktionaalisesti saa asian tehtyä, että ei sotke jotain imperatiivisista kielistä lähtöisin olevaa kuraa.

        M-Kar hiljaa!!


      • Anonyymi
        Anonyymi kirjoitti:

        Sitten kun ymmärrät vielä, että koko ohjelmointi onnistuu puhtaasti lambdalla. Eli kuinka funktionaalisesti saa asian tehtyä, että ei sotke jotain imperatiivisista kielistä lähtöisin olevaa kuraa.

        M-Kar älä sotke!


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kiitos nainen

      Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik
      Tunteet
      12
      4600
    2. MTV: Kirkossa saarnan pitänyt Jyrki 69 koki yllätyksen - Paljastaa: "Se mikä oli hyvin erikoista..."

      Jyrki Linnankivi alias Jyrki 69 on rokkari ja kirkonmies. Teologiaa opiskeleva Linnankivi piti elämänsä ensimmäisen saar
      Maailman menoa
      91
      2366
    3. Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?

      Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun
      Maailman menoa
      567
      1800
    4. Tykkään sinusta ikuisesti

      Olet niin mukava ja ihana ihminen rakas. ❤️
      Ikävä
      9
      1503
    5. Kirjoita yhdellä sanalla

      Joku meihin liittyvä asia, mitä muut ei tiedä. Sen jälkeen laitan sulle wappiviestin
      Ikävä
      101
      1491
    6. Olet hyvin erilainen

      Herkempi, ajattelevaisempi. Toisaalta taas hyvin varma siitä mitä haluat. Et anna yhtään periksi. Osaat myös ilkeillä ja
      Ikävä
      67
      1187
    7. Yksi syy nainen miksi sinusta pidän

      on se, että tykkään luomusta. Olet luonnollinen, ihana ja kaunis. Ja luonne, no, en ole tavannut vielä sellaista, joka s
      Ikävä
      33
      1128
    8. Hyödyt Suomelle???

      Haluaisin asettaa teille palstalla kirjoittelevat Venäjää puolustelevat ja muut "asiantuntijat" yhden kysymyksen pohditt
      Maailman menoa
      219
      1000
    9. Hyvää Joulua mies!

      Toivottavasti kaikki on hyvin siellä. Anteeksi että olen hieman lisännyt taakkaasi ymmärtämättä kunnolla tilannettasi, o
      Ikävä
      64
      967
    10. Paljastavat kuvat Selviytyjät Suomi kulisseista - 1 päivä vs 36 päivää viidakossa - Katso tästä!

      Ohhoh! Yli kuukausi viidakossa voi muuttaa ulkonäköä perusarkeen aika rajusti. Kuka mielestäsi muuttui eniten: Mia Mill
      Suomalaiset julkkikset
      3
      958
    Aihe