2017-02-14 5 views
0

ich eine Uhr bin die Schaffung und zu versuchen, den Einsatz, wenn inline, hier ist der Code:Wenn inline mit zwei Aktionen, wenn wahr

h == 24 ? _setWeekDay($this) && (h = 0) : h > 24 ? _setWeekDay($this) && (h -= 24): null; 

Aber das Problem ist, wenn h> 24 der Code eingestellte Woche Tag, aber don‘ t subtrahieren h - = 24! Kannst du mir erklären, warum das nicht funktioniert?

+0

Was gibt '_setWeekDay()' zurück? Etwas Truthiges? – alex

+0

hat keine Rückkehr –

+1

Versuchen Sie, inline zu verwenden, wenn nur die Operation wie D = A einfach ist? B: C. All diese Dinge machen den Code nur weniger wartbar. –

Antwort

1
h == 24 
    ? _setWeekDay($this) && (h = 0) 
    : h > 24 
     ? _setWeekDay($this) && (h -= 24) 
     : null; 

Aufteilen für bessere Lesbarkeit. Ihr Problem ist &&, das nicht für das gedacht ist, was Sie erreichen möchten. Sie verwenden einen ternären Operator, der nützlich ist, um nicht so viele if-Anweisungen zu erstellen. Was Sie brauchen, ist dies:

h == 24 
    ? (_setWeekDay($this), (h = 0)) 
    : h > 24 
     ? (_setWeekDay($this), (h -= 24)) 
     : null; 

Dies ermöglicht es Ihnen, mehrere Aktionen in einem ternären bedingten auszuführen. Siehe jsfiddle

+1

Vielen Dank, ich fühlte, dass etwas mit && falsch war, aber Sie haben meine Frage beantwortet! –

+1

Das ist, was SO für: D – jdmdevdotnet

+0

Gibt es Namen für dieses Konstrukt? Ich sehe, dass '(, )' immer den zweiten Ausdruck zurückgibt, in diesem Fall ' '. @AlGoreRhythm –

Verwandte Themen