Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Scope, shadowing, local functions, anonymous functions

Postad 2009-12-17 av Hans Sterby i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 2224, Betyg: 0%

Förord

Scope, shadowing, local values and local functions, anonymous functions
Innehåll
  » Scope
  » Local functions
  » Shadowing
  » Anonymous functions


Scope

Varje värde har sin räckvidd där den kan användas eller vara nåbar.
Standard är att varje värde har sin nåbarhet på modulnivå och kan användas efter sin deklaration.
Men värden deklarerade i en funktion har sin nåbarhet i funktionen och kan inte nås utanför funktionen.
Så en funktion kan nå ett värde deklarerat högre upp i scopet ovanför.

Detta kod exempel är ok:

let moduleValue = 10
Let functionA x =
x + moduleValue


Detta är inte ok:

let functionB x =
let functionValue = 20
x + functionValue

// funktionValue är inte nåbar utanför functionB
printfn "%A" functionValue


Felsvaret blir:
error FS0039: The value or contructor 'functionValue' is not defined

Nåbarheten kan tyckas vara oitressant men har stor betydelse i F#.
I F# kan du ha nästlade funktioner, det är en funktion deklarerad i en funktion.
Den nästlade funktionen kallas en local funktion.


Local functions

I detta exemplel så deklareras en lokal funktion.

let moduleValue = 10
let functionC p1 p2 =
let localFunction p3 = moduleValue + (p3 * p3)

let a = localFunction moduleValue p1
let b = localFunction moduleValue p2
a + b


Nu kan det se konstigt ut med lokala funktioner och att det blir rörigt men i funtionell programmering är det en tillgång att kunna ha funktioner nåbara bara där dom behövs och inte smutsa ner övrig kod.


Shadowing

Man kan tro att man uppdaterar ett värde i F# m,en det som egentligen händer är shadowing.
Ta detta aexempel:

let x = 10
let x = 20
let x = 30


Det som händer är att man sätter ett nytt namn på ett värd där namnet redan har använts och det gamla går inte längre att få tag på.


Anonymous functions

I funktionell programmering så skiljer man inte på värden eller funktioner så det är bekvämt och ofta mer läsbart att skapa en anonym funktion som returnerar det man är ute efter.
En anonym funktion är en funktion utan namn.
Exempel:

let primes = [2; 3; 5; 7]

let primeCubes = List.map (fun n -> n * n * n) primes


Vi skapar en lista och för varje element i listan appliseras den anonyma funktionen.

Följ mig på Twitter som TigerHasse.
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 369
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies