I just came here to add the same proposal. четвер, 28 грудня 2023 р. о 11:40:07 UTC+2 DaTrader пише:
> It's not special at all. Actually it is as generic as the current > `Keyword.take/2`. You either want the operation to succeed if there aren't > all keys present or you want it to fail. Those are two equally important > use cases. > > On Thursday, December 28, 2023 at 3:21:50 AM UTC+1 rogers...@gmail.com > wrote: > >> I don't see such special use cases as good candidates to be included in >> builtins libraries. >> >> Em segunda-feira, 18 de dezembro de 2023 às 07:56:11 UTC-3, DaTrader >> escreveu: >> >>> Many times I need to merge a subset of a keyword list or a map into >>> another keyword list or map while requiring it to fail if not all keys are >>> present. >>> >>> For this purpose I have small utility modules called KwUtils and >>> MapUtils where I have functions like the one below: >>> >>> ``` >>> @doc """ >>> Takes specified key-value pairs from the keyword list but raises if >>> any not found. >>> """ >>> @spec take!( keyword(), [ atom()]) :: keyword() >>> def take!( kw, keys) do >>> taken = Keyword.take( kw, keys) >>> >>> if length( taken) != length( keys) do >>> raise "Expected all keys in #{ inspect( keys)} to be present in #{ >>> inspect( kw)}" >>> end >>> >>> taken >>> end >>> ``` >>> >>> It'd be nice if a corresponding function was part of the `Keyword` and >>> `Map` modules each. >>> >>> -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/787ccf87-a103-4271-9d77-2101f1e23247n%40googlegroups.com.