Estou tentando escrever uma linha que avalia um bool que diz se um objeto Date opcional está no futuro ou não.
Eu escrevi a seguinte declaração
let dateIsInFuture = (optionalDate ?? .now) >= .now
E estou curioso para saber se isso é ruim. Especialmente porque se o primeiro e o segundo .now forem avaliados em momentos diferentes, podem deixar de ser iguais. É claro que posso usar agora uma linha diferente para remover essa ambigüidade... mas estou curioso para saber se isso funcionaria com a maneira como o Swift compila e executa essa linha de código.
Essas duas ligações terão horários (ligeiramente ) diferentes, sim. É improvável que isso importe na prática.
Considere usar
Optional.map(_:)
:Em vez de usar como padrão
.now
, use como padrão.distantFuture
ou.distantPast
para deixar claro o que você pretende que aconteça no caso nulo. Com base no seu uso de>=
, presumo que você queira dizer o seguinte:Este também seria um bom momento para decidir se você poderia tornar
optionalDate
não-opcional, padronizando-o para.distantFuture
antes. Então você pode evitar muitos??
códigosif let
.