mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-16 18:52:27 +08:00
feat: add AddIfNotExist function for set
This commit is contained in:
@@ -17,6 +17,19 @@ func (s Set[T]) Add(values ...T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddIfNotExist checks if item exists in the set,
|
||||||
|
// it adds the item to set and returns true if it does not exist in the set,
|
||||||
|
// or else it does nothing and returns false.
|
||||||
|
func (s Set[T]) AddIfNotExist(value T) bool {
|
||||||
|
if !s.Contain(value) {
|
||||||
|
if _, ok := s[value]; !ok {
|
||||||
|
s[value] = struct{}{}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Contain checks if set contains value or not
|
// Contain checks if set contains value or not
|
||||||
func (s Set[T]) Contain(value T) bool {
|
func (s Set[T]) Contain(value T) bool {
|
||||||
_, ok := s[value]
|
_, ok := s[value]
|
||||||
|
|||||||
@@ -17,6 +17,17 @@ func TestSet_Add(t *testing.T) {
|
|||||||
assert.Equal(true, set.Equal(expected))
|
assert.Equal(true, set.Equal(expected))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSet_AddIfNotExist(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestSet_AddIfNotExist")
|
||||||
|
|
||||||
|
set := NewSet[int]()
|
||||||
|
set.Add(1, 2, 3)
|
||||||
|
|
||||||
|
assert.Equal(false, set.AddIfNotExist(1))
|
||||||
|
assert.Equal(true, set.AddIfNotExist(4))
|
||||||
|
assert.Equal(NewSet(1, 2, 3, 4), set)
|
||||||
|
}
|
||||||
|
|
||||||
func TestSet_Contain(t *testing.T) {
|
func TestSet_Contain(t *testing.T) {
|
||||||
assert := internal.NewAssert(t, "TestSet_Contain")
|
assert := internal.NewAssert(t, "TestSet_Contain")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user