mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Add Comparable#uniq; CRuby2.4
This commit is contained in:
@@ -708,4 +708,20 @@ module Enumerable
|
||||
def nil.to_h
|
||||
{}
|
||||
end
|
||||
|
||||
def uniq(&block)
|
||||
hash = {}
|
||||
if block
|
||||
self.each do|*v|
|
||||
v = v.__svalue
|
||||
hash[block.call(v)] ||= v
|
||||
end
|
||||
else
|
||||
self.each do|*v|
|
||||
v = v.__svalue
|
||||
hash[v] ||= v
|
||||
end
|
||||
end
|
||||
hash.values
|
||||
end
|
||||
end
|
||||
|
||||
@@ -158,6 +158,21 @@ class Enumerator
|
||||
}
|
||||
end
|
||||
|
||||
def uniq(&block)
|
||||
hash = {}
|
||||
Lazy.new(self){|yielder, val|
|
||||
if block
|
||||
v = block.call(val)
|
||||
else
|
||||
v = val
|
||||
end
|
||||
unless hash.include?(v)
|
||||
yielder << val
|
||||
hash[v] = val
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
alias force to_a
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user