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

Unit(), ignore function och tuples.

Postad 2010-02-23 av Hans Sterby i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 6909, Betyg: 100%

Förord

Vad är unit för datatyp, hur används ignore function och tuples.
Innehåll
Unit()
------
Unit ett värde som representerar ingenting och unit typen kan jämföras med void i C#.
F# är en funktionellt språk och i funktionella språk måste alla funktioner returnera nånting och värdet null ogilas av funktionella språk.
Men om en funktion som exempel bara skriver ut ett värde till konsolen så måste den ändå returnera nånting.
Funktioner som inte returnerar något värde måste i F# returnera unit.

xemple:

let x = ()

FSharp interactive svarar:
val x : unit


let print s =
printfn "%A" s

print "PelleSoft"

"PelleSoft"
val it : unit = ()

ignore funktion:
---------------
Om du inte vill ta om hand om returvärdet unit() så kan du ignorera värdet från en funktion som returnerar unit.
Då använder du ignore funktionen.

Square funktionen returnerar en int.

let square x = x * x

val square : int -> int


square 10

val it : int = 100

Genom att ignorera svaret från square funktionen så returneras värdet unit istället.

ignore (square 10)

// Eller lite coolare syntax
square 10 |> ignore

val it : unit = ()


Tuples:
-------
Med tuples kan man gruppera relaterade värden utan att behöva skapa en datatyp som håller ihop alla värden.
Om en funktion returnerar flera värden så grupperar du dom i en tuple och returnerar den istället.
Eller om en funktion tar ett antal parametrar så kan man skicka in en tuple som parameter istället.
En tuple kan innehålla vilka datatyper som helst och även en eller flera nya tuplar.
I bakgrunden så är det System.Tuple som används, samma som i C#.
Tuples är inget nytt i funktionella språk utan har där funnits länge. Men i C# 4.0 så är System.Tuple en ny klass.
Tuples är den enklaste men kanske mest användbara av alla F# datastrukturer.

Man använder sällan direkt System.Tuple utan man deklarerar en tuple oftast såhär:

En tuple med 3 integer värden

let myTuple = (10, 20, 30)

val myTuple : int * int * int = (10, 20, 30)


En tuple med olika värden

let myTuple = (1, "2", 3.0)

val myTuple : int * string * float = (1, "2", 3.0)

En tuple som innehåller en tuple och som skapas utifrån en befintlig tuple

let aNewTuple = (myTuple, 10, "20", 30.0)

val aNewTuple : (int * string * float) * int * string * float =
((1, "2", 3.0), 10, "20", 30.0)

Tuples kan brytas ned i sina olika delar på två sätt.
För par, det vill säga tuples med två element, du kan explicit anropa funktioner fst och snd, som, när deras förkortat namn antyder, extrahera den första och andra delen av paret.

En tuple med två värden.

let tuple = ("first", "second")

val tuple : string * string = ("first", "second")

Hämta ut första och andra värdet med fst och snd.

let first = fst tuple
let second = snd tuple

val first : string = "first"
val second : string = "second"

Innehåller en tuple mer än två värden så kan du hämta värdena såhär.

let tuple = (1, 2, 3, 4, 5)

val tuple : int * int * int * int * int = (1, 2, 3, 4, 5)


let i1, i2, i3, i4, i5 = tuple

val i5 : int = 5
val i4 : int = 4
val i3 : int = 3
val i2 : int = 2
val i1 : int = 1

En funktion som tar en tuple som parameter

let tupleAddFunction (x, y) = x + y

val tupleAddFunction : int * int -> int


let sum = tupleAddFunction (10, 20)

val sum : int = 30

En funktion som returnerar en tuple

let tupleFunktion (x, y) =
(x + y, x * y)

val tupleFunktion : int * int -> int * int


let tuple = tupleFunktion (10, 20)

val tuple : int * int = (30, 200)

Att bryta ner en Tupel och få ut typerna av alla element så kan du använda FSharpType.GetTupleElements metod, som returnerar tillbaka typer av alla elementa som en matris.

let aTuple = ("a string", 10, 20.0)

val aTuple : string * int * float = ("a string", 10, 20.0)


open Microsoft.FSharp.Reflection
let tupleElementTypes = FSharpType.GetTupleElements (aTuple.GetType())

val tupleElementTypes : System.Type [] =
[|System.String; System.Int32; System.Double|]

Om du vill ha ut ett element och inte de andra i en tuple så gör du såhär.
Underscore ignorerar första och tredje elementet i tuplen och x får värdet av den andra elementet.

let _, x, _ = aTuple

val x : int = 10


Du kan följa 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 145
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