overallduka
Arithmetic Operators with Pipe Operator
Hello, i just have on doubt, is about code design, i have this case:
def searched_for?(user_id, term) do
search_length = from(se in Project.Search,
where: ilike(se.keywords, ^"%#{term}%") and se.user_id == ^user_id,
select: se.id)
|> Project.Repo.all
|> length
search_length > 0
end
As your guys can see i needed create the variable search_length to compare in the final result, have some way to put arythmetic operators in the pipe operator ? i tried |> >(0) and |> != 0 but without succeded.
Most Liked
Qqwy
Yes, there is!
All of the common operators are actually simple functions in the Kernel namespace, and can be called like a normal function by prefixing them with their namespace:
3 |> Kernel.+(2).
swelham
NobbZ
Besides of the ways that were already shown to you, you can always write another function or use an anonymous one, even the anonymous syntax is a biz counterintuitive in pipes:
iex(1)> defmodule F, do: def greater(a, b), [do: a > b]
{:module, F,
<<70, 79, 82, 49, 0, 0, 4, 216, 66, 69, 65, 77, 69, 120, 68, 99, 0, 0, 0, 161,
131, 104, 2, 100, 0, 14, 101, 108, 105, 120, 105, 114, 95, 100, 111, 99, 115,
95, 118, 49, 108, 0, 0, 0, 4, 104, 2, ...>>, {:greater, 2}}
iex(2)> import F
F
iex(3)> 1 |> greater(2)
false
iex(4)> 1 |> (fn (a, b) -> a > b end).(2)
false
iex(5)> 1 |> (&(&1 > &2)).(2)
false
Using single arity anonymous functions is possible as well:
iex(6)> 1 |> (&(&1 > 0)).() # these pair of parens is important!
true
overallduka
Oh, just worked fine, thank you guys for the quick replies. =)









