Was ist eine reine Funktion?

7

Ich habe dieses Zitat gefunden:

  
  1. Mache Vorhersagen für reine Funktionen.
  2.   

Prädikatsreinheit: Ein Prädikat ist ein Funktionsobjekt, das eine Ja / Nein-Antwort zurückgibt, typischerweise als bool -Wert. Eine Funktion ist rein in   der mathematische Sinn, wenn seine Ergebnisse nur von seinen Argumenten abhängen   (Beachten Sie, dass diese Verwendung von "pure" nichts mit pure virtual zu tun hat   Funktionen).

     

Lassen Sie keine Vergleichselemente den Status beibehalten oder auf sie zugreifen, die sich auf das Ergebnis auswirken   ihres operators () , einschließlich Member- und Global-Status.   Lieber operator () eine const Elementfunktion für   Prädikat (siehe Punkt 15).

Was ist eine pure Funktion , auf die in dieser Aussage Bezug genommen wird, und kann jemand Beispiele geben? Vielen Dank im Voraus.

    
user3395918 08.03.2014, 11:42
quelle

2 Antworten

14

Dies ist eine reine Funktion:

%Vor%

Das Ergebnis des Aufrufs hängt nur von seinem Argument ab.

Dies ist keine reine Funktion:

%Vor%

Der zurückgegebene Wert hängt von anderen Dingen als dem Parameter ab.

    
juanchopanza 08.03.2014, 11:45
quelle
6

Funktion ist rein wenn:

  1. Es hat keine semantisch beobachtbaren Nebenwirkungen
  2. Gibt bei gleicher Eingabe immer das gleiche Ergebnis zurück

Die Funktion kann also immer noch einen Zustand haben, aber sie sollte nicht beobachtbar sein. Zum Beispiel:

%Vor%

Funktion foo hat einen Zustand (statischer Vektor), ist aber nicht semantisch beobachtbar, also rein. Es ist eine dumme Funktion, aber es sollte den Punkt zeigen.

    
Blaz Bratanic 08.03.2014 11:50
quelle

Tags und Links