Skip to content

Commit e80dad1

Browse files
author
José Valim
committed
Merge pull request #1654 from ericmj/fix-enum-find
Use ifnone in Enum.find for all collections
2 parents eb96d73 + e2599be commit e80dad1

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

lib/elixir/lib/enum.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,8 +449,8 @@ defmodule Enum do
449449
end
450450

451451
def find(collection, ifnone, fun) do
452-
Enumerable.reduce(collection, ifnone, fn(entry, _) ->
453-
if fun.(entry), do: throw({ :enum_find, entry })
452+
Enumerable.reduce(collection, ifnone, fn(entry, ifnone) ->
453+
if fun.(entry), do: throw({ :enum_find, entry }), else: ifnone
454454
end)
455455
catch
456456
{ :enum_find, entry } -> entry

lib/elixir/test/elixir/enum_test.exs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,8 @@ defmodule EnumTest.Range do
408408
range = Range.new(first: 2, last: 6)
409409
assert Enum.find(range, fn(x) -> rem(x, 2) == 0 end) == 2
410410
assert Enum.find(range, fn(x) -> rem(x, 2) == 1 end) == 3
411+
assert Enum.find(range, fn _ -> false end) == nil
412+
assert Enum.find(range, 0, fn _ -> false end) == 0
411413
end
412414

413415
test :find_value do

0 commit comments

Comments
 (0)