Bei der imperativen Programmierung haben wir normalerweise Code, der wie folgt aussieht:
func addOneToSlice(xs []int) []int { rs := make([]int, len(xs)) for i, value := range xs { rs[i] = value 1 } return rs }
Beachten Sie jedoch Folgendes zur for-Schleife:
Vergleichen Sie, wie dieselbe Aufgabe in F# erledigt würde:
let rec addOneToList = function | [] -> [] | x :: xs -> x 1 :: addOneToList xs
Bedenken Sie nun Folgendes:
Angesichts dieser Einschränkungen würde das Hinzufügen von 1 zu einem beliebigen Element y, das nicht am Anfang der Liste steht, die Struktur unserer Funktion erheblich verändern.
Vergleichen Sie nun, wie die Berechnung in beiden Stilen voranschreitet:
Im funktionalen Stil hat die Verbindung von Umfang und Rechenfortschritt die folgenden Konsequenzen:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3