implement #classify

This commit is contained in:
yui-knk
2014-08-03 13:06:30 +09:00
parent a442f232e9
commit 93a8b08f59
3 changed files with 23 additions and 6 deletions
-1
View File
@@ -40,7 +40,6 @@ These methods are not implemented yet.
+ taint
+ untaint
+ to_set
+ classify
+ divide
## License
+11 -2
View File
@@ -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
View File
@@ -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