dry-python / dry-python/returns

Adding some utility methods to Maybe/Result

Offen
#1,114 20 Kommentare 7 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Python
Sterne
4.4k
Forks
155
Ø Merge
2 Std. 27 Min.
Gemergte PRs (30 T.)
22

Beschreibung

Have you considered adding some handy utility functions to `Maybe` and `Result`?
In using `returns` I'm missing many helpful methods you can find in Rust, for example.
Adding a few of these could increase the usability of the containers of `returns`.

Related: #1091

Here they are, in my subjective order of usefulness:

## Setdefault

Set a value if one is not yet present.
The name `setdefault` would be consistent with the python dict method.
(Although it might be good to choose another name to make clear that
the method doesn't mutate.)

```python
>>> Some(6).setdefault(7)
Some(6)
>>> Nothing.setdefault(3)
Some(3)
```

## Zip

Combine the values from two containers into a tuple, if both are successful.

```python
>>> Some(8).zip(Some(2))
Some((8, 2))
>>> Some(7).zip(Nothing)
Nothing
>>> Nothing.zip(Some(3))
Nothing
>>> Nothing.zip(Nothing)
Nothing
```

## Filter

Keep a value based on a predicate

```python
>>> Some("9").filter(str.isdigit)
Some("9")
>>> Some("foo3").filter(str.isdigit)
Nothing
>>> Nothing.filter(str.isdigit)
Nothing
```

## And

`AND` logic operation

```python
>>> Some(5).and_(Some(9))
Some(9)
>>> Some(9).and_(Nothing)
Nothing
>>> Nothing.and_(Some(8))
Nothing
```

## Or

`OR` logic operation

```python
>>> Some(5).or_(Some(9))
Some(5)
>>> Some(9).or_(Nothing)
Some(9)
>>> Nothing.or_(Some(8))
Some(8)
>>> Nothing.or_(Nothing)
Nothing
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.