Created
August 19, 2020 19:40
-
-
Save arkanister/f7c4617689ec37e7154764bd1299fef7 to your computer and use it in GitHub Desktop.
Pure Python coalesce alternative.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Unset: | |
""" | |
This class represent an unset instance. | |
""" | |
unset = Unset() | |
def first_or_default(sequence, condition=unset, default=None): | |
""" | |
Returns the first or default value that matches with a condition. | |
""" | |
sequence = iter(sequence) if condition is unset else filter(condition, sequence) | |
try: | |
return next(sequence) | |
except StopIteration: | |
return default | |
def coalesce(*sequence, default=None): | |
""" | |
Returns the first valid element in sequence. | |
""" | |
return first_or_default(sequence, None, default=default) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment