mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
implement #classify
This commit is contained in:
@@ -40,7 +40,6 @@ These methods are not implemented yet.
|
||||
+ taint
|
||||
+ untaint
|
||||
+ to_set
|
||||
+ classify
|
||||
+ divide
|
||||
|
||||
## License
|
||||
|
||||
+11
-2
@@ -284,8 +284,17 @@ class Set
|
||||
@hash.eql?(o.instance_variable_get(:@hash))
|
||||
end
|
||||
|
||||
# def classify
|
||||
# end
|
||||
def classify
|
||||
return to_enum :classify unless block_given?
|
||||
h = {}
|
||||
|
||||
each { |i|
|
||||
x = yield(i)
|
||||
(h[x] ||= self.class.new).add(i)
|
||||
}
|
||||
|
||||
h
|
||||
end
|
||||
|
||||
# def divide
|
||||
# end
|
||||
|
||||
+12
-3
@@ -549,9 +549,18 @@ assert("Set#==") do
|
||||
assert_equal(set1.clone, set1)
|
||||
end
|
||||
|
||||
#assert("Set#classify") do
|
||||
#end
|
||||
#
|
||||
assert("Set#classify") do
|
||||
set = Set.new(1..10)
|
||||
ret = set.classify { |i| i % 3 }
|
||||
|
||||
assert_equal(3, ret.size)
|
||||
assert_equal(Hash, ret.class)
|
||||
ret.each_value { |v| assert_equal(Set, v.class) }
|
||||
assert_equal(Set[3,6,9], ret[0])
|
||||
assert_equal(Set[1,4,7,10], ret[1])
|
||||
assert_equal(Set[2,5,8], ret[2])
|
||||
end
|
||||
|
||||
#assert("Set#divide") do
|
||||
#end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user