Ich möchte bedingte Logik basierend auf bestimmten UI-Beziehungen während Benutzerinteraktion auslösen (in diesem Fall möchte ich eine Methode aufrufen, wenn ein Benutzer zu einem bestimmten Punkt scrollt) a UIScrollView
). Ich würde die folgende Zeile Code erwarten, dass dies rechtlich zu tun, da es sehr ausdrucksvoll ist:Verwenden von "Where" -Klauseln, um optionale Typen in Swift Arithmetik zu erzeugen
func scrollViewDidScroll(scrollView: UIScrollView) {
guard let overlap = scrollView.contentOffset.y - 220 where overlap > 0 else {
return
}
reactToScrollOverlap(of: overlap)
}
Allerdings habe ich den Fehler, dass die guard let
eine optionale Art erfordert. Das ist vernünftig, aber ich habe in diesem Fall erwartet, dass die where
Klausel natürlich ein optionales einführen würde, da, wenn die Arithmetik falsch funktioniert, es keinen übereinstimmenden Wert von overlap
gibt.
Gibt es eine Möglichkeit guard let
zu verwenden (oder alternativ if let
) solche, die enthielten where
Klauseln Bedingungen über die Ergebnisse der Arithmetik vor, zwischen Int, CGFloat oder anderen primitiven/primitiven artigen Typen?
ich nehme an, dass dies die ausdrucksvollste Alternative ist, also werde ich das bis auf weiteres als Antwort markieren (: – Quintana
auf den zweiten Gedanken, ich habe die andere Antwort als richtig markiert, obwohl du recht hast und ich sollte das wahrscheinlich tun, die von JAL zur Verfügung gestellte Problemumgehung verwendet where-Klauseln wie im Titel angegeben – Quintana
@Quintana Try meine zweite Lösung – Sulthan