Wann sollte ich "ignore" anstelle von "()" verwenden?So refaktorieren Sie eine Funktion mit "ignorieren"
ich versuchte, die folgend zu schreiben:
let log = fun data medium ->()
erhielt ich dann die folgende Meldung:
Lint: 'Spaß _ ->()' könnte in der Lage sein, in Refactoring wird ' ignorieren'.
So aktualisiert ich die Erklärung auf die folgenden:
let log = fun data medium -> ignore
Gibt es eine Anleitung, warum ich einen über den anderen verwenden könnte?
Mein Bauch sagt mir, dass ich ignorieren sollte, wenn Sie einen tatsächlichen Ausdruck ausführen. In diesem Fall erkläre ich jedoch eine höherwertige Funktion.
Sind meine Annahmen richtig?
'let log = Spaß Datenträger ->()' gibt Einheit zurück, während 'log = Spaß Datenträger -> Ignorieren' gibt eine Funktion zurück, die Einheit zurückgibt - die eine ersetzt nicht die andere. Die Flusen-Nachricht zeigt an, dass die erste, anders als binär statt unär, semantisch dasselbe wie "ignorieren" ist. – ildjarn
Wie oft erwähnt, sollten Sie, wenn Sie 'ignore' verwenden oder eine Kompiliernachricht verwenden, um' ignore' zu verwenden, den Code wirklich betrachten und verstehen, warum dies normalerweise ein Designproblem ist und nicht wie. Wie ich oft bemerke, brauche ich selten "ignorieren" und es ist fast immer mit Benutzer-I/O, z. [Console.ReadKey() |> Ignorieren] (http://StackOverflow.com/a/24215845/1243762) oder Interagieren mit nicht-funktionalem Code wie .NET-Methoden, z.B. [Ein Berechnungsausdruck-Wrapper für StringBuilder] (http://www.fssnip.net/d5) –
In meinem Fall soll meine Log-Funktion über I/O mit der Außenwelt interagieren. –