2017-12-06 2 views
-2

http://code.activestate.com/recipes/384122-infix-operators/ Dieser Artikel zeigt eine Möglichkeit zum Erstellen von benutzerdefinierten Infix-Operatoren mit funktionalen Programmierung in Python. Aber ich kann mir einfach nicht vorstellen, wie dieser Hack funktioniert. Ich verstehe die Rechtsversion der Operatoren und wie die Double-Undercore-Methoden funktionieren, aber ich verstehe nicht, warum dieser Hack funktioniert.Wie funktioniert der Python Infix Hack?

Vielen Dank im Voraus

Nova

Antwort

0

2 |x| 4 ruft x.__ror__(2).__or__(4). Nun gibt x.__ror__(2)Infix(lambda arg, self=self, other=other: self.function(other, arg)) zurück, wobei in diesem Fall self.functionlambda x,y: x*y ist und other2 ist. So bekommen wir: Infix(lambda arg, self=x, other=2: other * arg). Hierauf verweisen wir auf .__or__(4), die self.function(other) zurückgibt, wobei other4 ist. Also:

(lambda arg, self=x, other=2: other * arg)(4) 
    === 
arg = 4 
self = x 
other = 2 
other * arg 
    === 
4 * 2 
    === 
8 

So bekommen wir 8.

+0

Thank you very much! –