Swift Optionals (oder Haskells Vielleicht) in Python?

8

In Swift kann ich var?.prop machen. Dies ergibt nil , wenn var ist nil , sonst ergibt sich der Wert der Eigenschaft prop von var .

Äquivalent, ich kann var >>= prop in Haskell machen, was mir None ist var ist None , sonst gibt es mir den Wert, prop auf den Wert innerhalb var anzuwenden (eingewickelt in Just ).

Gibt es in Python ein Äquivalent?

    
Ana 30.12.2015, 23:59
quelle

2 Antworten

3

Die anderen Antworten sind auf dem richtigen Weg, wenn sie einen konditionalen Ausdruck vorschlagen, aber falsch, wie es gemacht wird. Du kannst es so machen:

%Vor%

oder äquivalent

%Vor%

Es gibt einen PEP-Entwurf über das Hinzufügen eines solchen Features zu Python, und darüber wurde bereits diskutiert es auf der Python-Ideen-Mailingliste. Es sieht nicht so aus, als ob es in naher Zukunft hinzugefügt wird (wenn überhaupt), aber das Lesen der PEP gibt Ihnen eine Vorstellung von einigen existierenden und vorgeschlagenen Wegen, dies zu handhaben.

    
BrenBarn 31.12.2015, 05:45
quelle
2

Lange Rede, kurzer Sinn, es gibt keine spezielle Syntax für die Handhabung von Optionals (da es keine Optionals gibt), obwohl Sie die bedingte Zuweisung (ternärer Operator) verwenden können, um die Funktionalität nachzuahmen:

%Vor%

In Python würde ich lieber überprüfen, ob var das Attribut hat, auf das Sie zugreifen möchten.

%Vor%

Sie können eine Funktion schreiben, um sie kürzer zu machen

%Vor%

Es gibt eine weniger universelle Möglichkeit, dies zu tun (und weniger explizit, IMHO):

%Vor%

Das Problem hier ist, dass Sie None erhalten, wenn bool(var.prop) == False , also halten Sie sich besser an den obigen ternären Operator.

    
Eli Korvigo 31.12.2015 00:07
quelle

Tags und Links