Warum ist es verboten, eine Remote-Funktion in einem Wächter zu verwenden?

7

Warum kann ich String oder ein anderes Modul nicht benutzen?

Code:

%Vor%

Und wie kann ich einen solchen Fall elegant umformatieren, wenn ich Modulfunktionen verwenden möchte?

    
jimmbraddock 18.01.2016, 08:25
quelle

2 Antworten

18

Aus der Erlang-Dokumentation :

  

Die Menge der gültigen Schutzausdrücke (manchmal als Schutztests bezeichnet) ist eine Teilmenge der gültigen Erlang-Ausdrücke. Der Grund für die Einschränkung der Menge gültiger Ausdrücke besteht darin, dass garantiert werden muss, dass die Bewertung eines Wächterausdrucks frei von Nebenwirkungen ist.

Dasselbe gilt auch für Elixir.

Die gute Nachricht ist, dass es für Ihren speziellen Anwendungsfall einen Wächter gibt, der funktioniert:

%Vor%

In der Regel, wenn das, was Sie tun möchten, nicht in einem Wächter verwendet werden kann, müssen Sie innerhalb der Funktion nachsehen, zum Beispiel:

%Vor%

Die folgende Antwort erklärt, wie Sie Ihre eigene Wache mit Makros definieren. Neue Wächterklausel erstellen (Der Wächter muss die gültigen Wächterfunktionen verwenden, die in dokumentiert sind Ссылка )

    
Gazler 18.01.2016, 08:29
quelle
0
%Vor%

hat nicht die gleiche Bedeutung wie

%Vor%

Dies gilt nur für Zeichen, die aus einem einzelnen Byte bestehen.

%Vor%

Für das korrekte Verhalten müssen Sie manuell versenden:

%Vor%     
Richard 14.12.2017 17:19
quelle

Tags und Links