mirror of
https://github.com/jbranchaud/til
synced 2026-01-05 08:08:02 +00:00
Add Two Ways To Find An Item In A List as a reasonml til
This commit is contained in:
@@ -10,7 +10,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
|
|||||||
For a steady stream of TILs from a variety of rocketeers, checkout
|
For a steady stream of TILs from a variety of rocketeers, checkout
|
||||||
[til.hashrocket.com](https://til.hashrocket.com/).
|
[til.hashrocket.com](https://til.hashrocket.com/).
|
||||||
|
|
||||||
_724 TILs and counting..._
|
_725 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -540,6 +540,7 @@ _724 TILs and counting..._
|
|||||||
- [String Interpolation With Integers And Sprintf](reason/string-interpolation-with-integers-and-sprintf.md)
|
- [String Interpolation With Integers And Sprintf](reason/string-interpolation-with-integers-and-sprintf.md)
|
||||||
- [String Interpolation With Quoted Strings](reason/string-interpolation-with-quoted-strings.md)
|
- [String Interpolation With Quoted Strings](reason/string-interpolation-with-quoted-strings.md)
|
||||||
- [Trying Out ReasonML In CodeSandbox](reason/trying-out-reasonml-in-codesandbox.md)
|
- [Trying Out ReasonML In CodeSandbox](reason/trying-out-reasonml-in-codesandbox.md)
|
||||||
|
- [Two Ways To Find An Item In A List](reason/two-ways-to-find-an-item-in-a-list.md)
|
||||||
- [Wrapping A Component For Use In JavaScript](reason/wrapping-a-component-for-use-in-javascript.md)
|
- [Wrapping A Component For Use In JavaScript](reason/wrapping-a-component-for-use-in-javascript.md)
|
||||||
|
|
||||||
### Ruby
|
### Ruby
|
||||||
|
|||||||
30
reason/two-ways-to-find-an-item-in-a-list.md
Normal file
30
reason/two-ways-to-find-an-item-in-a-list.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Two Ways To Find An Item In A List
|
||||||
|
|
||||||
|
The `List` module has the typical `find` function that you'd expect any
|
||||||
|
enumerable type to include. It has a very similar `find_opt` function as
|
||||||
|
well. The difference is in the return types.
|
||||||
|
|
||||||
|
When using `List.find` you'll have to deal with the possibility of a
|
||||||
|
`Not_found` exception.
|
||||||
|
|
||||||
|
```reasonml
|
||||||
|
switch (List.find(item => item.id == id, my_list)) {
|
||||||
|
| exception Not_found => print_endline("Not found!")
|
||||||
|
| item => print_endline("Found it: " ++ item.name)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `List.find_opt` function has a more familiar interface that doesn't
|
||||||
|
require you to know the details of what exceptions could arise. All you want
|
||||||
|
to know is if it was found or _not_. This is achieved by having an
|
||||||
|
`option('a)` return type.
|
||||||
|
|
||||||
|
```reasonml
|
||||||
|
switch (List.find_opt(item => item.id == id, my_list)) {
|
||||||
|
| None => print_endline("Not found!")
|
||||||
|
| Some(item) => print_endline("Found it: " ++ item.name)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [`List` module](https://reasonml.github.io/api/List.html) for more
|
||||||
|
details.
|
||||||
Reference in New Issue
Block a user